2012-05-01 226 views
1

在ASP.NET MVC的[HttpPost]方法中,MVC運行時會自動將前端表單域中的數據映射並傳輸到View Model中,根據字段名稱。將ASP.NET MVC模型綁定到ASP.NET WebForm

如何在ASP.NET WebForm中完成同樣的事情?

例如我有一個名爲Person的名字和姓氏屬性。

我有一個帶有FirstName和LastName的Textbox控件的WebForm頁面。

在窗體上按Submit時,有沒有辦法將FirstName和LastName自動綁定到代碼隱藏Button_Click事件中的Person對象?

回答

0

也許最簡單的方法是在Page_Load事件中明確指定值,無論何時它是回發。類似這樣的:

if (this.IsPostBack) 
{ 
    person.FirstName = FirstNameTextBox.Text; 
    person.LastName = LastNameTextBox.Text; 
} 

或者你在尋找更具說明性的方法嗎?

+1

他正在尋找一種動態方法,它接受這些屬性並嘗試根據它們的名稱自動將它們映射到一個類型。 –

+1

而不是像Asp.Net MVC那麼? –

+0

是的,我正在尋找在ASP.NET MVC中找到的功能,並將其應用於WebForms回發。乾杯。 –

4

您可以使用模型綁定在webforms v4.5中執行此操作。這是我們稱之爲Ad-Hoc Model Binding的一種方式,您可以將其綁定到控件而不使用數據綁定控件(如formview)。我計劃在此發佈博客,但下面的代碼描述了博客的簡短描述

以下是您的標記顯示方式。 我的模型有2個屬性:名稱和說明

Name<input type="text" name="Name" value=" " id="Name"  /> 
<br /> 

Description<input type="text" name="Description" value=" " id="Description" /> 
<br /> 
<asp:Button Text="Submit" runat="server" OnClick="Unnamed_Click" /> 

以下是在按鈕單擊處理代碼。 類別是我的模型。在這種情況下,模型綁定系統會從表單集合中查找表單值提供程序中提取值。

var category = new Category(); 
var formValueProvider = new FormValueProvider(ModelBindingExecutionContext);    

TryUpdateModel(category, formValueProvider); 

if (ModelState.IsValid) 
{ 
    // save changes to database 
}