2012-05-01 199 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 
}