zoukankan      html  css  js  c++  java
  • 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 = "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中也是可以定义参数属性的。

    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

  • 相关阅读:
    js看懂funid与funname各自的作用以及回显示是怎么找到对应位置的
    居然脑海中还记得03年的瑞星升级ID号
    [恢]hdu 2186
    [恢]hdu 2109
    [恢]hdu 2140
    [恢]hdu 2160
    [恢]hdu 2101
    [恢]hdu 2162
    [恢]hdu 2201
    [恢]hdu 2163
  • 原文地址:https://www.cnblogs.com/parry/p/ASPNET_NewFeature_Model_Binding.html
Copyright © 2011-2022 走看看