4

我在我的 c#/asp.net 应用程序上实现功能时遇到问题。

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

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

有谁知道我该怎么做?

提前致谢 !

编辑>>这是代码:

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

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

编辑2 >>>

因为似乎没有办法做我一开始想做的事情,所以我最终使用了一个带有 response.redirect() 的会话变量

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

4

3 回答 3

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

于 2012-04-04T12:20:44.303 回答
2

尝试这样的事情

在你的Page_Load

if(!IsPostBack)
{
      if(check for only one object)
      {
         //your submit code
      }
}
于 2012-04-04T12:22:39.880 回答
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
    }
}

现在,已经向您展示了这一点,我会警告您,它可能不会带来最佳的用户体验。当我这样做时,它是针对一个没有其他解决方案的非常具体的案例。该页面实际上将回传给用户,并且在单击按钮的 javascript 生效之前,他们将看到该页面片刻。此外,当您设置按钮的 PostBackUrl 时,这意味着当它被单击时,您的整个表单将被发布到指定的页面。当前页面背后的代码根本不会触发,所以如果你有任何验证,它就不会运行。

让用户点击按钮提交表单并没有错,即使他们只有一个选择。根据我的经验,用户喜欢感觉自己可以控制系统。他们不喜欢页面只是在没有他们输入的情况下做事。

Also, there is not really anything wrong with putting the information the next page needs into the session or even a database table, and using Response.Redirect. It's a fairly common practice and works reliably in most scenarios.

于 2012-04-04T15:13:54.547 回答