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


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

    分类: 00.ASP.NET
    标签: ASP.NET
  • 相关阅读:
    Web 日志分析过程
    nginx系列之九:lua服务
    Linux网络编程之IO模型
    从URL输入到页面展现到底发生什么
    CentOS 日常运维十大技能
    以MySQL为例,详解数据库索引原理(1)
    Elasticsearch的特点以及应用场景
    Ubuntu1804编译安装LNMP
    golang 高级
    Centos7 安装 Redis
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2697579.html
Copyright © 2011-2022 走看看