asp.net页面上的多个服务器端表单

asp.net页面上的多个服务器端表单,asp.net,html,Asp.net,Html,我需要在一个页面上有2个html表单。一个用于登录详细信息,一个用于反馈。两个表单都不能有runat=“server”attrib 有什么建议吗?您将无法在一个页面中使用runat=“server”生成两个表单 这里有一个很好的解决方案 使用web表单时,页面上应该只有一个表单。可能是废话,但这是一个网络世界 将一个表单环绕整个页面。然后,当单击按钮(或使用任何事件)时,您应该能够访问页面上所有控件的值。是的,正如您所说,在ASP.NET中,您不能有多个表单元素。但是,您可以以相同的形式处理多个

我需要在一个页面上有2个html表单。一个用于登录详细信息,一个用于反馈。两个表单都不能有
runat=“server”
attrib


有什么建议吗?

您将无法在一个页面中使用runat=“server”生成两个表单

这里有一个很好的解决方案


使用web表单时,页面上应该只有一个表单。可能是废话,但这是一个网络世界


将一个表单环绕整个页面。然后,当单击按钮(或使用任何事件)时,您应该能够访问页面上所有控件的值。

是的,正如您所说,在ASP.NET中,您不能有多个表单元素。但是,您可以以相同的形式处理多个操作。不要使用表单的action属性,使用asp.net服务器控件,如,并将逻辑写入回发控件的事件中。

将其中一个表单作为常规HTML表单处理--不要使用runat=“server”。手动从Request.Form集合的任何post中提取值(因为不会有任何与表单对应的服务器端变量)

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


另外,我建议最终迁移到ASP.NETMVC。从web的角度来看,MVC是一种更好的体系结构。它更符合无状态web模型,并且没有ASP.NET中为帮助它模拟WinForms开发而施加的限制。

ASP.NET页面框架体系结构允许使用带有
runat=“server”
属性的单个表单。你不必担心这件事。出于两种不同的目的,将控件放在Web窗体上,并分别处理两个asp.net服务器控件的单击事件。

您只需在一个窗体内按逻辑将它们拆分即可。如果您使用validator并且不希望这两个“表单”需要填写其他值,则.NET控件上有一个名为ValidationGroup的属性,该属性只需对一个“表单”中的所有控件都相同即可。

虽然不是一种直接的方法,但它有其自身的局限性

这篇文章可能有用。