2012-04-04 59 views
3

我无法在我的c#/ asp.net应用程序上实现功能。从代码后面提交表单

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

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

有没有人有我如何做到这一点的想法?

在此先感谢!

编辑>>这里是代码:

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

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

EDIT2 >>>

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

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

+0

请发表您的评论。 – 2012-04-04 12:21:31

+0

我试图找到提交给定表单的方法,似乎并不存在。 然后我试着看看我是否可以模拟button.click,似乎也不存在。 我也尝试做一个response.write()用javascript提交表单,也许这是可能的,但它不是一个非常“漂亮”的解决方案。最后,唯一的办法似乎是直接将我的发布数据发送到表单导致的页面,但我觉得用一个火箭筒杀死一个蚂蚁(并且发送POST数据到另一个页面似乎是* ss中的一个痛苦,因为well) – BPruvost 2012-04-04 12:36:39

回答

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时,这意味着当它被点击时,你的整个表单将被发布到指定的页面。当前页面的代码根本不会触发,所以如果您有任何验证,它将不会运行。

让用户点击按钮提交表单即使他们只有一个选择也没有错。根据我的经验,用户喜欢感觉他们对系统有控制权;他们不喜欢当页面没有他们的输入时做事情。

此外,将下一页需要的信息放入会话甚至数据库表中并使用Response.Redirect并没有什么错误。这是一个相当普遍的做法,并且在大多数情况下可靠运行。

+0

感谢您的回答。 我已经使用PostBackUrl的按钮(看看我的.aspx文件,我直接把它放在那里)。 我得出了和你一样的结论:执行一些JS代码是可能的,但可能不是最佳实践。 所以最后我确实喜欢你的建议和使用会话变量,然后Response.Redirect和我在此之后销毁该变量。 – BPruvost 2012-04-04 15:20:35

2

发生在客户端。正如在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

+0

表单导致我在其中检索发布数据的另一个页面。 那么对我来说唯一的解决方案是将发布的数据从代码隐藏手动发送到其他页面? – BPruvost 2012-04-04 12:25:47

+0

你可以使用Server.Transfer,或者,最坏的情况下,Response.Redirect – ivowiblo 2012-04-04 12:26:37

+0

是的,但我需要得到我的POST数据,我不确定是否可以使用这些方法传输 – BPruvost 2012-04-04 12:30:49

2

尝试是这样的

在你Page_Load

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

提交代码实际上是我感兴趣的部分;) – BPruvost 2012-04-04 12:28:07