ASP.NET MVC模型綁定

openkk 12年前發布 | 13K 次閱讀 ASP.NET

模型綁定(Model Binding)特性使用請求數據來創建強類型對象,以此簡化控制器的動作。Jess Chadwick 在 MSDN 上的一篇文章中深入探索了該特性,并研究了復雜的場景,包括缺省模型綁定器不滿足要求時如何定制。

ASP.NET MVC 模型綁定是什么?它讓下面這段代碼:

public ActionResult Create ()

{

var product = new Product () {

AvailabilityDate = DateTime.Parse (Request["availabilityDate"]),

CategoryId = Int32.Parse (Request["categoryId"]),

Description = Request["description"],

Kind = (ProductKind) Enum.Parse (typeof (ProductKind),

Request["kind"]),

Name = Request["name"],

UnitPrice = Decimal.Parse (Request["unitPrice"]),

UnitsInStock = Int32.Parse (Request["unitsInStock"])

}

};

可以這樣寫:

public ActionResult Create (Product product)

{

// ...

}

ASP.NET 會自動將查詢字符串參數名稱與強類型對象中的屬性名稱相對應。這也支持 JSON 的 post 值。模型綁定支持更復雜的狀況,比如集合與嵌套對象,不過在使用集合時你必須小心語法(其中要使用索引器來表示集合中的數據項)。

某些情況下,讀者可能希望使用自定義的模型綁定器,以擴展現有的模型綁定器。常用的例子是將接口與抽象類綁定,這需要與下層業務模型的高度耦合,因為在運行時,綁定器需要基于請求數據選擇特定實現。Jess 的文章展示了如何實現,只需繼承 DefaultBindingProvider,并重載需要的行為。想知道如何對自定義的模型綁定期進行單元測試,可參考 Scott Hanselmann 的文章《分割 DateTime——對 ASP.NET MVC 的模型綁定器進行單元測試》。

查看英文原文:ASP.NET MVC Model Binding

來自: InfoQ

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!