我在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()的会话变量
答案 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
并没有什么不妥。这是一种相当普遍的做法,在大多数情况下都能可靠地运行。