在前两篇文章中,我们了解到了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的配置。
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 >
后台绑定数据。
2 {
3 List<Users> list = new List<Users>();
4 list.Add( new Users() { UserID = 1, UserName = " Parry ", UserEmail = " Parry@cnblogs.com " });
5 list.Add( new Users() { UserID = 2, UserName = " Spiderman ", UserEmail = " Spiderman@cnblogs.com " });
6 list.Add( new Users() { UserID = 3, UserName = " Superman ", UserEmail = " PaSupermanrry@cnblogs.com " });
7 list.Add( new Users() { UserID = 4, UserName = " Batman ", UserEmail = " Batman@cnblogs.com " });
8 return list.AsQueryable<Users>();
9 }
页面显示。
当然,控件还支持UpdateMethod和DeleteMethod分别进行修改和删除操作。
需要注意的是,在后台定义的SelectMethod中也是可以定义参数属性的。
还支持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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。