2009-09-10 74 views
0

我需要在一个页面上有2个HTML表单。一个用于登录详细信息,另一个用于反馈。两种表格都不能有runat="server"属性。在一个页面上的asp.net多个服务器端表单

有什么建议吗?

+1

文章[ASP.NET中基于表单的编程(http://msdn.microsoft.com/en-us/magazine/cc164151.aspx)可能是有用的。 – 2010-02-06 19:25:56

回答

1

当使用Web表单,你应该永远只能在页面上的一个形式。也许废话,但这样是网页形式的世界......

包裹整个页面各处一种形式。然后当点击一个按钮(或者您正在使用的任何事件)时,您应该可以访问页面上所有控件的值。

1

是的,就像你说的那样,在ASP.NET中你不能再有一个表单元素。但是,您可以使用相同的形式处理多个动作。不要使用表单的action属性,使用asp.net服务器控件,如< asp:Button >,并将你的逻辑写入回发控件的事件中。

4

手柄的形式作为一个普通的HTML表单一个 - 不要使用RUNAT =“服务器”。手动从Request.Form集合中提取任何帖子中的值(因为不会有与该表单对应的任何服务器端变量)。

或者,将所有元素放在同一个表单中,但使用不同的控件进行提交。每组控件(及其提交按钮)应该位于不同的验证组中,以避免由于您不关心的元素而导致验证错误。在提交按钮的回调中处理表单处理。

此外,我会建议最终转移到ASP.NET MVC。从网络的角度来看,MVC是一个更好的架构。它更接近于无状态Web模型,并且没有ASP.NET中的限制来帮助它模拟WinForms开发。

1

ASP.NET页面框架架构允许单个表格runat="server"属性。你不必担心这件事。将控件放置在Webform上以实现两种不同目的,并分别处理两个asp.net服务器控件的单击事件。

1

你只需要在逻辑上将其拆分成一个表格即可。如果您使用验证程序,并且不希望这两个“表单”要求填写其他值,那么您在名为ValidationGroup的.NET控件上拥有一个属性,只需要在一个“表单”中对所有属性都是相同的。

相关问题