我有一個網頁。頂部是一個<form id="form1" runat="server">
內的搜索欄。如何在ASP.NET頁面上提交數據兩次
我也想補充一點,相同的網頁,將允許用戶註冊自己的詳細信息的形式。問題,ASP.NET只允許每頁一個表單。
我該如何實現目標?任何解決方法?
我有一個網頁。頂部是一個<form id="form1" runat="server">
內的搜索欄。如何在ASP.NET頁面上提交數據兩次
我也想補充一點,相同的網頁,將允許用戶註冊自己的詳細信息的形式。問題,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
}
雙擊在設計師的按鈕將創建在後面的代碼click事件。
你只能有一個服務器端頁面上形式。
如果它是一個選項,你可以有一個客戶端的形式(不runat="server") with a separate action - this POST can go to a different page, where you will have to access
Request.Form`檢索張貼的值。
另一種選擇是使用單獨的按鈕具有不同的事件處理程序發佈。
您可以使用簡單的HTML表單的方法,但存在的總是有問題後整個頁面後背,或使用MVC:
Are multiple forms on a single page supported in asp.net 3.5?
正如一個已經說明由@Simon提供的nswer很容易在代碼隱藏中有多個點擊處理程序來處理您在頁面上需要的內容 - 這是解決「缺少多種表單」問題的最簡單方法。
事情在這種情況下非常有用的是<asp:Panel>
控制的DefaultButton
屬性。這意味着如果您的網頁有多個區域(例如)<asp:TextBox>
控件,並且每個區域都與特定的相關聯,如果焦點位於其中一個文本框中,則按返回或輸入將導致在被點擊的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>
謝謝你提醒我在我最後的答案。我真的很感激:D –