1

在 ASP.NET MVC 中,在 [HttpPost] 方法上,MVC 运行时会根据字段名称自动将数据从前端的表单字段映射并传输到视图模型中。

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

例如,我有一个名为 Person 的对象,具有 FirstName 和 LastName 属性。

我有一个 WebForm 页面,其中的 Textbox 控件分别带有 FirstName 和 LastName。

在表单上按下提交时,有没有办法在代码隐藏的 Button_Click 事件中自动将 FirstName 和 LastName 绑定到 Person 对象?

4

4 回答 4

5

ASP.net 4.5 实际上将内置 Web 窗体模型绑定。

顾有一个帖子和其他一些东西在这里......

http://weblogs.asp.net/scottgu/archive/2011/09/05/web-forms-model-binding-part-1-selecting-data-asp-net-vnext-series.aspx

于 2012-05-01T03:03:43.540 回答
4

您可以使用模型绑定在 webforms v4.5 中执行此操作。这是一种我们称之为 Ad-Hoc 模型绑定的方式,您可以在不使用数据绑定控件(如 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
}
于 2012-12-22T03:54:12.047 回答
0

也许最简单的方法是在 Page_Load 事件中显式分配值,只要它是回发。像这样的东西:

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

或者您是否正在寻找一种更具声明性的方法?

于 2012-05-01T03:00:34.760 回答
0

看看ASP.NET Web 窗体的模型绑定器。它正在做你想做的事 - 通过应用于其属性的自定义属性将回发数据映射到类。

于 2012-06-12T21:19:23.473 回答