【发布时间】:2014-10-18 07:55:10
【问题描述】:
在我的项目中,我想在一个网页中运行 2 个表单,该网页是母版页,一个用于联系我们,一个用于注册用户。但不允许使用多个服务器端表单。有什么解决办法吗?
【问题讨论】:
-
看看这个,如果这可以帮助..stackoverflow.com/questions/8712398/…
在我的项目中,我想在一个网页中运行 2 个表单,该网页是母版页,一个用于联系我们,一个用于注册用户。但不允许使用多个服务器端表单。有什么解决办法吗?
【问题讨论】:
您可以使用 Asp.net Webforms 的回发功能。 您应该创建一个按钮用于singup,另一个按钮用于联系。你可以在服务器端捕获事件,然后做你想做的事。
【讨论】:
您可以在母版页中创建使用 HTML 创建的常规客户端表单,并使用 Request.Form 来读取发布的数据。为此,所有input 元素都必须有一个名称,您可以使用Request.Form["ElementName"] 读取它们。
考虑到表单不能嵌套。
所以,您的母版页需要像这样
...
<body>
<form id="form1" runat="server">
</form>
<form id="contact" action="Contact.aspx" method="post">
<input type="text" name="Message"/>
<input type="submit" value="Contact us!"/>
</form>
</body>
第一个<form>是常规的ASP.NET服务端形式,支持服务端组件
第二个<form> 是一个自定义HTML 表单。它没有runat="server" 属性,并且位于服务器端<form> 之外。
第二个表单动作指向.aspx 页面。在其页面加载事件中,您可以使用Request.Form["Name"] 访问联系表单的名称。请注意,您还需要包含一个提交按钮来将数据发送到服务器,以及一个method="post" 来指定发送页面的方法。
这是诉诸“基本”HTML 控件,因此没有视图状态,如果未在服务器中重置发布的值,它们将丢失。 IE。如果表单已发布,并且出现错误,则在再次渲染页面时,之前发布的值将丢失。
如果您想让它更复杂,您可以使用 Javascript 和可选的 AJAX。但这是一个更复杂的解决方案。 See this for an example.
【讨论】:
ASP.NET 表单仅支持一种表单。您可以使用 iFrame 并在 iFrame 内呈现您的第二页(第二个表单)。
这是一篇关于在标签后放置一些页面内容的有趣帖子。这可能对您有帮助。
【讨论】: