ASP.NET Web Forms 4.5的新特性(三):Model Binding

在前两篇文章中,我们了解到了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<T>或者IQueryable<T>类型的对象,T与前面的ItemType一致。

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

 

复制代码
 1  < form  id ="form1"  runat ="server" >
 2      < div >
 3          < asp:GridView  ID ="GridView_Users"  runat ="server"  ItemType ="ModelBinding.Users"
 4              DataKeyNames ="UserID"  SelectMethod ="GetUsers"
 5              AutoGenerateColumns ="False" >
 6              < Columns >
 7                  < asp:BoundField  DataField ="UserID"  HeaderText ="User ID"   />
 8                  < asp:BoundField  DataField ="UserName"  HeaderText ="User Name"   />
 9                  < asp:BoundField  DataField ="UserEmail"  HeaderText ="Email"   />
10              </ Columns >
11          </ asp:GridView >
12          < asp:ValidationSummary  ID ="ValidationSummary_UserEdit"  runat ="server"  ShowModelStateErrors ="true"   />
13      </ div >
14  </ form >
复制代码

后台绑定数据。

复制代码
1  public IQueryable<Users> GetUsers()
2 {
3     List<Users> list =  new List<Users>();
4     list.Add( new Users() { UserID =  1, UserName =  " Parry ", UserEmail =  " [email protected] " });
5     list.Add( new Users() { UserID =  2, UserName =  " Spiderman ", UserEmail =  " [email protected] " });
6     list.Add( new Users() { UserID =  3, UserName =  " Superman ", UserEmail =  " [email protected] " });
7     list.Add( new Users() { UserID =  4, UserName =  " Batman ", UserEmail =  " [email protected] " });
8      return list.AsQueryable<Users>();
9 }
复制代码

页面显示。

ASP.NET 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


作者:Parry 
出处:http://www.cnblogs.com/parry/ 
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

分类:  00.ASP.NET
标签:  ASP.NET

你可能感兴趣的:(asp.net)