从代码后面提交表单

时间:2012-04-04 12:18:33

标签: c# asp.net

我在c#/ asp.net应用程序上实现功能时遇到了麻烦。

我有一个带有RadioButtonList和提交按钮的表单。 RadioButtonList是从我从数据库中检索的对象列表Page_Load()生成的。 如果列表中只有一个对象,我想自动提交表单。

我可以访问我的Form对象,提交按钮等...但我似乎无法找到解决方案(最后我正在寻找一种form.Submit())方法。< / p>

有没有人知道我该怎么做?

提前致谢!

编辑&gt;&gt;这是代码:

.aspx:http://pastebin.com/0E6T7dqH

.aspx.cs:http://pastebin.com/54payZJP

EDIT2&gt;&gt;&gt;

因为看起来没有办法做我想做的事情,我最终使用了一个带有response.redirect()的会话变量

资料来源: http://dotnetslackers.com/Community/blogs/haissam/archive/2007/11/26/ways-to-pass-data-between-webforms.aspx

3 个答案:

答案 0 :(得分:3)

发布在客户端。与Page_Load一样,您当前正在服务器端执行,只需调用要在帖子上执行的代码。

编辑:实际转到另一个aspx

public void Page_Load(object sender, EventArgs e) {
    if(!IsPostback && OnlyOneItem) {
        Server.Transfer("TheOtherPage.aspx");
    }
}

Server.Transfer将维护整个请求,因此您的帖子数据将可用。

http://msdn.microsoft.com/en-us/library/system.web.httpserverutility.transfer.aspx

答案 1 :(得分:2)

尝试这样的事情

Page_Load

if(!IsPostBack)
{
      if(check for only one object)
      {
         //your submit code
      }
}

答案 2 :(得分:1)

我实际上不得不做一次类似的事情。这是你可以做到的一种方式。

Asp.Net按钮有一个名为PostBackUrl的属性,它完全符合您的预期 - 它会控制窗体在您单击按钮时的发布位置。

您还可以使用RegisterStartupScript功能在页面上呈现javascript。

现在,通过这两件事,您可以实现目标。

if(!IsPostBack)
{
    if(results == 1)
    {
        button.PostBackUrl = "next page's url"
        //Register script to click the button using RegisterStartupScript
    }
}

现在,在向您展示了这一点之后,我会警告您可能无法获得最佳用户体验。当我这样做时,这是一个非常具体的案例,没有其他解决方案。页面实际上会回发给用户,他们会在点击按钮生效之前看到该页面片刻。此外,当您设置按钮的PostBackUrl时,这意味着当单击它时,您的整个表单将被发布到指定的页面。

表示当前页面的代码根本不会触发,因此如果您有任何验证,它将无法运行。

让用户点击按钮提交表单没有任何问题,即使他们只有一个选择。根据我的经验,用户喜欢他们对系统的控制;当页面只是在没有输入的情况下做事情时,他们不喜欢它。

此外,将下一页所需的信息放入会话甚至数据库表并使用Response.Redirect并没有什么不妥。这是一种相当普遍的做法,在大多数情况下都能可靠地运行。