技术开发 频道

Web Forms 4.5新特性:Model Binding

        【IT168 技术】在前两篇文章中,我们了解到了ASP.NET Web Forms 4.5四个新特性:强类型数据控件和Bundling针对HTML5的更新和Unobtrusive Validation

  在介绍强类型控件的时候只是简单介绍了下它具有ItemType的属性,可以设置强类型值进行绑定,如果只是引入了这个属性,那么有点像语法糖,没什么实际意义。

  其实许多开发者也发现了在ASP.NET Web Forms 4.5中引入了许多MVC的特性,而Model Binding则是更加像MVC的一个特性了。

  Model Binding

  如果用过ObjectDataSource控件,肯定对其SelectMethod有印象,在ASP.NET Web Forms 4.5中,微软直接将此方法移到了强类型控件上。

  将之前DataBind方法直接替换成了更方便的SelectMethod方法,具体参见这里

  SelectMethod方法接受IEnumerable或者IQueryable类型的对象,如果使用了前面介绍的ItemType属性后,就需要接受IEnumerable或者IQueryable类型的对象,T与前面的ItemType一致。

  如我们这样设置一个GridView的配置。

<form id="form1" runat="server">
    
<div>
        
<asp:GridView ID="GridView_Users" runat="server" ItemType="ModelBinding.Users"
             DataKeyNames
="UserID" SelectMethod="GetUsers"
             AutoGenerateColumns
="False">
            
<Columns>
                
<asp:BoundField DataField="UserID" HeaderText="User ID" />
                
<asp:BoundField DataField="UserName" HeaderText="User Name" />
                
<asp:BoundField DataField="UserEmail" HeaderText="Email" />
            
</Columns>
        
</asp:GridView>
        
<asp:ValidationSummary ID="ValidationSummary_UserEdit" runat="server" ShowModelStateErrors="true" />
    
</div>
</form>

  后台绑定数据。

public IQueryable<Users> GetUsers()
{
     List
<Users> list = new List<Users>();
     list.Add(
new Users() { UserID = 1, UserName = "Parry", UserEmail = "Parry@cnblogs.com" });
     list.Add(
new Users() { UserID = 2, UserName = "Spiderman", UserEmail = "Spiderman@cnblogs.com" });
     list.Add(
new Users() { UserID = 3, UserName = "Superman", UserEmail = "PaSupermanrry@cnblogs.com" });
     list.Add(
new Users() { UserID = 4, UserName = "Batman", UserEmail = "Batman@cnblogs.com" });
    
return list.AsQueryable<Users>();
}

  页面显示。

Web Forms 4.5新特性:Model Binding

  当然,控件还支持UpdateMethod和DeleteMethod分别进行修改和删除操作。

  需要注意的是,在后台定义的SelectMethod中也是可以定义参数属性的。

public IQueryable<Users> GetUsers([Control]int? userID)

  还支持Form、QueryString、Cookies、Url这些属性。

  整体感觉这部分是ASP.NET Web Forms 4.5变化较大,也是更像MVC的地方。微软将EF,强类型控件,Model Binding串联起来,定义了一个规整的后台绑定的方法和流程。

  更详细的介绍可以参考ScottGu的系列文章:Web Forms Model Binding

0
相关文章