我有一个网页。顶部是<form id="form1" runat="server">
内的搜索栏。
我还想在同一页面上添加一个允许用户注册其详细信息的表单。问题,ASP.NET每页只允许一个表单。
我如何实现目标?任何解决方法?
答案 0 :(得分:0)
将要调用的代码放在不同的按钮单击事件中。因此,如果单击搜索按钮,则仅运行搜索按钮单击事件中的代码。如果单击注册按钮,则仅运行寄存器单击事件中的代码。
以下是一个例子:
protected void Page_Load(object sender, EventArgs e) {
// Common code
}
protected void btnSearch_Click(object sender, EventArgs e) {
// Search code
}
protected void btnRegister_Click(object sender, EventArgs e) {
// Register code
}
双击设计器中的按钮将在后面的代码中创建单击事件。
答案 1 :(得分:0)
页面上只能有一个服务器端表单。
如果是一个选项,您可以使用客户端表单(没有runat="server") with a separate action - this POST can go to a different page, where you will have to access
Request.Form`来检索发布的值。
另一种选择是使用单独的按钮与不同的事件处理程序一起发布。
答案 2 :(得分:0)
您可以使用简单的HTML表单方法,但总是会回发整个页面的问题。或者使用mvc:
Are multiple forms on a single page supported in asp.net 3.5?
答案 3 :(得分:0)
正如@Simon在回答中已经说明的那样,在代码隐藏中使用多个点击处理程序很容易处理您在页面上所需的内容 - 这是解决“缺少多种形式”问题的最简单方法
在这种情况下非常有用的是DefaultButton
控件的<asp:Panel>
属性。这意味着,如果您的页面的多个区域包含(例如)<asp:TextBox>
个控件,并且每个区域都有一个特定的<asp:Button>
关联,如果焦点位于其中一个文本框中,则按< kbd>返回或 Enter 将导致点击DefaultButton
。
例如......
<asp:Panel runat="server" DefaultButton="btnSearch">
Search: <asp:TextBox runat="server" id="txtSearcn"/>
<asp:Button runat="server" id="btnSearch" Text="Search" OnClick="btnSearch_Click"/>
</asp:Panel>
See MSDN for more information on the DefaultButton
attribute of <asp:Panel>