您好,登錄后才能下訂單哦!
在我初學的時候對Model元數據的概念很模糊,或者說是在大腦中沒有它的一個模型,作為小白的我去看網上的一些文章還是兩眼一黑啥都看不明白,然后我想退縮了,對的我退縮了準備跳過這個部分去學其他的,在這過程中干什么都沒精神,就跟有一根刺插在心上一樣,最終我還是回頭了,現在來和大家分享一下什么是Model元數據,希望看完能對有的朋友有點幫助,大概的了解一下Model元數據到底是個什么玩意。
什么是Model元數據?
生成Model元數據的過程【一】
生成Model元數據的過程【二】
ModelMetaData的定義、詳解
Model元數據應用(常用特性應用)-1
Model元數據應用(自定義視圖模板)-2
Model元數據應用(IMetadataAware接口使用)-3
前面耽擱了這么久,不廢話了我們直接切入主題。
既然叫Model元數據就按照字面的意思得先要有Model吧(Model指的是視圖模型)。那我們就先定義Model,請看代碼1-1:
代碼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,定義了我們就要展現它。
示例還是接著前面篇幅的示例,還是那句話沒看過的朋友們也沒事。在你自己項目中找到默認控制器所在,并且添加代碼1-2到其中。
代碼1-2
1 public ViewResult Show(Customer customer) 2 { 3 return View(customer); 4 }
然后我們右鍵Show()方法,添加視圖,并且勾選創建強類型視圖,如圖1-1所示。
圖1-1
(這里跟大家說一下,如果怕手敲代碼的失誤可以在下拉框中選擇你要定義到視圖的模型類型,可能剛剛在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元數據有點坑,為了初學者沒有考慮到大神們的感受,因為我知道我剛接觸這部分知識的時候最想了解什么,所以望大神們勿噴。有了這個基礎對后續文章的理解有很大的幫助,也會讓大家在大腦中留個印象。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。