2009-09-10 81 views
0

我需要在一個頁面上有2個HTML表單。一個用於登錄詳細信息,另一個用於反饋。兩種表格都不能有runat="server"屬性。在一個頁面上的asp.net多個服務器端表單

有什麼建議嗎?

+1

文章[ASP.NET中基於表單的編程(http://msdn.microsoft.com/en-us/magazine/cc164151.aspx)可能是有用的。 – 2010-02-06 19:25:56

回答

1

當使用Web表單,你應該永遠只能在頁面上的一個形式。也許廢話,但這樣是網頁形式的世界......

包裹整個頁面各處一種形式。然後當點擊一個按鈕(或者您正在使用的任何事件)時,您應該可以訪問頁面上所有控件的值。

1

是的,就像你說的那樣,在ASP.NET中你不能再有一個表單元素。但是,您可以使用相同的形式處理多個動作。不要使用表單的action屬性,使用asp.net服務器控件,如< asp:Button >,並將你的邏輯寫入回發控件的事件中。

4

手柄的形式作爲一個普通的HTML表單一個 - 不要使用RUNAT =「服務器」。手動從Request.Form集合中提取任何帖子中的值(因爲不會有與該表單對應的任何服務器端變量)。

或者,將所有元素放在同一個表單中,但使用不同的控件進行提交。每組控件(及其提交按鈕)應該位於不同的驗證組中,以避免由於您不關心的元素而導致驗證錯誤。在提交按鈕的回調中處理表單處理。

此外,我會建議最終轉移到ASP.NET MVC。從網絡的角度來看,MVC是一個更好的架構。它更接近於無狀態Web模型,並且沒有ASP.NET中的限制來幫助它模擬WinForms開發。

1

ASP.NET頁面框架架構允許單個表格runat="server"屬性。你不必擔心這件事。將控件放置在Webform上以實現兩種不同目的,並分別處理兩個asp.net服務器控件的單擊事件。

1

你只需要在邏輯上將其拆分成一個表格即可。如果您使用驗證程序,並且不希望這兩個「表單」要求填寫其他值,那麼您在名爲ValidationGroup的.NET控件上擁有一個屬性,只需要在一個「表單」中對所有屬性都是相同的。

相關問題