我們知道,在Asp.Net Mvc Preview5中加入了全新的ModelBinder特性,雖然這個特性非常的強大,但是使用起來並不是那麼的友好,因此,在最新的Asp.Net Mvc Beta中,框架對這部分進行了進一步的加強,使得復雜參數的自動綁定得以實現,本文將分級部分完整探討整個mvc框架中的modelbinder實現和完全挖掘系統自帶的ModelBinder的能力,使得基於mvc框架的web開發脫離頁面取值的苦海.
(參見: http://www.cnblogs.com/leven/archive/2008/08/31/1280481.html以及http://www.cnblogs.com/leven/archive/2008/09/01/1280862.html)
首先我們稍微回顧下ModelBinder的使用方法.首先定義一個實體類,然後針對該類寫一個ModelBinder,確定綁定關系,這樣就可以在action的參數中直接使用了.
然而,很多朋友都有體會,這個ModelBinder用起來太過復雜.有沒有更好的解決方法呢?在Asp.Net Mvc beta中,這個答案是肯定的.那就是beta中提供的新特性,自動綁定.
我們知道,在preview5中,系統也能對基本類型以及DateTime和Nullable<DateTime>進行自動綁定,但是對於自定義類是無能為力的.但是想一想,自定義實體類也應該是由一系列簡單類型構成的啊,也就是說,一個復雜的實體類都是有很多簡單類型構成,是不是可以有一個通用的方法來做這個綁定呢?答案是肯定的,其實在我上篇關於preview5綁定的文章例子中就是提供一個相對簡單的通用綁定方案,理所當然的,我們可以擴展這個方案,讓它更加智能化一些,想來Asp.Net Mvc開發團隊也意識到這一點,於是在最新的beta版中,mvc框架就增強了DefaultModelBinder的功能,使得綁定工作盡可能的簡化.
在本篇文章中,我們會探討新的ModelBinder如何使用,且它是如何工作的.
首先,我們用最快的方式進行一次”新版”ModelBinder的實踐,建立一個Mvc工程.設定一個默認的routing.然後開始加入代碼,這個實踐的項目文件如下圖:
工程建立完畢後,我們在NewModelBinderDemo.Library.Entities中加入一個SimpleArticle.cs.這是測試的一個簡單實體,代碼如下: