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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM