在我初學的時候對Model元數據的概念很模糊,或者說是在大腦中沒有它的一個模型,做爲小白的我去看網上的一些文章仍是兩眼一黑啥都看不明白,而後我想退縮了,對的我退縮了準備跳過這個部分去學其餘的,在這過程當中幹什麼都沒精神,就跟有一根刺插在心上同樣,最終我仍是回頭了,如今來和你們分享一下什麼是Model元數據,但願看完能對有的朋友有點幫助,大概的瞭解一下Model元數據究竟是個什麼玩意。學習
前面耽擱了這麼久,不廢話了咱們直接切入主題。測試
既然叫Model元數據就按照字面的意思得先要有Model吧(Model指的是視圖模型)。那咱們就先定義Model,請看代碼1-1:spa
代碼1-1調試
public class Customer { public string CustomerID { get; set; } public string Name { get; set; } public DateTime RegistrationDate{ get; set; } public Address Address { get; set; } } public class Address { public string Name { get; set; } }
很簡單的示例Model,定義了咱們就要展示它。code
示例仍是接着前面篇幅的示例,仍是那句話沒看過的朋友們也沒事。在你本身項目中找到默認控制器所在,而且添加代碼1-2到其中。對象
代碼1-2blog
1 public ViewResult Show(Customer customer) 2 { 3 return View(customer); 4 }
而後咱們右鍵Show()方法,添加視圖,而且勾選建立強類型視圖,如圖1-1所示。接口
圖1-1get
(這裏跟你們說一下,若是怕手敲代碼的失誤能夠在下拉框中選擇你要定義到視圖的模型類型,可能剛剛在VS環境中添加的類型還沒顯示出來,這時候點擊取消,從新生成如下項目,而後再按照上面的步驟就能夠找到你剛剛定義的類型了)博客
而後」添加」,添加代碼1-3到視圖中。
代碼1-3
<p>@Html.EditorForModel()</p>
這時候還不能調試,須要在咱們在項目中新建個文件夾,命名爲Binders,而後在此文件夾下新建類文件命名爲MyCustomBinderModel.cs,打開修改爲如代碼1-4。
代碼1-4
using System.Web.Mvc; using ConsoleApplication2; namespace MvcApplication.Binders { public class MyCustomBinderModel:IModelBinder { public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { return new Customer() { CustomerID = "010", Name = "測試人員", RegistrationDate = DateTime.Now, Address = new Address() { Name = "天空之城" } }; } } }
(代碼1-4中引用的命名空間ConsoleApplication2是Model所在部分,應該定義在項目的Models文件夾中的,這裏你們要注意下不要學習個人這種作法。)
代碼1-4是咱們本身定義的模型綁定器,配置咱們的調試環境所需,定義好了事後,還須要把自定義的模型綁定器添加到系統中,須要在Global.asax文件中的MvcApplication類型下的Application_Start()方法中添加代碼1-5。
代碼1-5
ModelBinders.Binders.Add(typeof(Customer), new Binders.MyCustomBinderModel());
這個時候咱們來調試一下,結果如圖1-2.
圖1-2
看到這裏了,有的朋友會問了說了這麼多一點都沒有講到Model元數據啊?稍安勿躁,不要着急,看下圖1-3.
圖1-3
原本還想修改視圖模型加上一些控制展現的特性,可是爲了簡潔明瞭給你們留個最基礎的印象決定仍是捨棄掉,固然了後面會有講到的。
如今咱們倒着講,在視圖中有句 @Html.EditorForModel()代碼,還有一系列的方法都是視圖輔助器方法,爲何叫這個名字呢,由於它幫助咱們生成視圖中所需的HTML代碼,那麼咱們想過沒有這些個視圖輔助器方法是根據幫助咱們生成HTML代碼的呢?對了,就是根據Model元數據,如今就能夠把Model元數據對象想象成封裝着Customer類型中的各類展現信息,細心的朋友可能發現圖1-2中少了點什麼,Customer的Address屬性沒有展現出來,爲何呢?這些問題和Model元數據的生成過程以及它的對象結構在後續的篇章中會講解到。
可能前篇鋪墊了這麼多後面就是一張圖來講明什麼是Model元數據有點坑,爲了初學者沒有考慮到大神們的感覺,由於我知道我剛接觸這部分知識的時候最想了解什麼,因此望大神們勿噴。有了這個基礎對後續文章的理解有很大的幫助,也會讓你們在大腦中留個印象。
做者:金源
出處:http://www.cnblogs.com/jin-yuan/
本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面