我有一个网页。顶部是一个搜索栏,位于<form id="form1" runat="server">
.
我还想在同一页面上添加一个表单,允许用户注册他们的详细信息。问题,ASP.NET 每页只允许一个表单。
我怎样才能实现我的目标?任何解决方法?
我有一个网页。顶部是一个搜索栏,位于<form id="form1" runat="server">
.
我还想在同一页面上添加一个表单,允许用户注册他们的详细信息。问题,ASP.NET 每页只允许一个表单。
我怎样才能实现我的目标?任何解决方法?
将要调用的代码放入不同的按钮单击事件中。因此,如果单击搜索按钮,则仅运行搜索按钮单击事件中的代码。如果单击注册按钮,则仅运行注册单击事件中的代码。
这是一个例子:
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
}
双击设计器中的按钮将在后面的代码中创建点击事件。
一个页面上只能有一个服务器端表单。
如果是一个选项,您可以使用客户端表单(没有runat="server") with a separate action - this POST can go to a different page, where you will have to access
Request.Form` 来检索发布的值。
另一种选择是使用单独的按钮来发布不同的事件处理程序。
正如@Simon 的回答中已经说过的那样,在您的代码隐藏中很容易拥有多个点击处理程序来准确处理您在页面上需要的内容 - 这是解决“缺少多种表单”问题的最简单方法。
在这种情况下非常有用的是控件的DefaultButton
属性。<asp:Panel>
这意味着如果您的页面有多个区域(例如)<asp:TextBox>
控件,并且每个区域都有特定的<asp:Button>
关联,如果焦点位于其中一个文本框中,则按下Return或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>
您可以使用简单的 HTML 表单方法,但存在总是将整个页面发布回来的问题。或使用 mvc: