ASP.NETMVCModel元數(shù)據(jù)(一)

ASP.NET MVC Model元數(shù)據(jù)(一)

前言

在我初學(xué)的時(shí)候?qū)odel元數(shù)據(jù)的概念很模糊,或者說是在大腦中沒有它的一個(gè)模型,作為小白的我去看網(wǎng)上的一些文章還是兩眼一黑啥都看不明白,然后我想退縮了,對(duì)的我退縮了準(zhǔn)備跳過這個(gè)部分去學(xué)其他的,在這過程中干什么都沒精神,就跟有一根刺插在心上一樣,最終我還是回頭了,現(xiàn)在來和大家分享一下什么是Model元數(shù)據(jù),希望看完能對(duì)有的朋友有點(diǎn)幫助,大概的了解一下Model元數(shù)據(jù)到底是個(gè)什么玩意。

成都創(chuàng)新互聯(lián)公司專注于杜爾伯特網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供杜爾伯特營銷型網(wǎng)站建設(shè),杜爾伯特網(wǎng)站制作、杜爾伯特網(wǎng)頁設(shè)計(jì)、杜爾伯特網(wǎng)站官網(wǎng)定制、微信小程序服務(wù),打造杜爾伯特網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供杜爾伯特網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

 

Model元數(shù)據(jù)

  • 什么是Model元數(shù)據(jù)?

  • 生成Model元數(shù)據(jù)的過程【一】

  • 生成Model元數(shù)據(jù)的過程【二】

  • ModelMetaData的定義、詳解

  • Model元數(shù)據(jù)應(yīng)用(常用特性應(yīng)用)-1

  • Model元數(shù)據(jù)應(yīng)用(自定義視圖模板)-2

  • Model元數(shù)據(jù)應(yīng)用(IMetadataAware接口使用)-3

 

什么是Model元數(shù)據(jù)?

前面耽擱了這么久,不廢話了我們直接切入主題。

既然叫Model元數(shù)據(jù)就按照字面的意思得先要有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,定義了我們就要展現(xiàn)它。

示例還是接著前面篇幅的示例,還是那句話沒看過的朋友們也沒事。在你自己項(xiàng)目中找到默認(rèn)控制器所在,并且添加代碼1-2到其中。

代碼1-2

1         public ViewResult Show(Customer customer)
2         {
3             return View(customer);
4         }

然后我們右鍵Show()方法,添加視圖,并且勾選創(chuàng)建強(qiáng)類型視圖,如圖1-1所示。

圖1-1

ASP.NET MVC Model元數(shù)據(jù)(一)

(這里跟大家說一下,如果怕手敲代碼的失誤可以在下拉框中選擇你要定義到視圖的模型類型,可能剛剛在VS環(huán)境中添加的類型還沒顯示出來,這時(shí)候點(diǎn)擊取消,重新生成以下項(xiàng)目,然后再按照上面的步驟就可以找到你剛剛定義的類型了)

然后”添加”,添加代碼1-3到視圖中。

代碼1-3

<p>@Html.EditorForModel()</p>

這時(shí)候還不能調(diào)試,需要在我們在項(xiàng)目中新建個(gè)文件夾,命名為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所在部分,應(yīng)該定義在項(xiàng)目的Models文件夾中的,這里大家要注意下不要學(xué)習(xí)我的這種做法。)

代碼1-4是我們自己定義的模型綁定器,配置我們的調(diào)試環(huán)境所需,定義好了過后,還需要把自定義的模型綁定器添加到系統(tǒng)中,需要在Global.asax文件中的MvcApplication類型下的Application_Start()方法中添加代碼1-5。

代碼1-5

ModelBinders.Binders.Add(typeof(Customer), new Binders.MyCustomBinderModel());

這個(gè)時(shí)候我們來調(diào)試一下,結(jié)果如圖1-2.

圖1-2

ASP.NET MVC Model元數(shù)據(jù)(一)

看到這里了,有的朋友會(huì)問了說了這么多一點(diǎn)都沒有講到Model元數(shù)據(jù)???稍安勿躁,不要著急,看下圖1-3.

圖1-3

ASP.NET MVC Model元數(shù)據(jù)(一)

本來還想修改視圖模型加上一些控制展示的特性,但是為了簡潔明了給大家留個(gè)最基礎(chǔ)的印象決定還是舍棄掉,當(dāng)然了后面會(huì)有講到的。

現(xiàn)在我們倒著講,在視圖中有句 @Html.EditorForModel()代碼,還有一系列的方法都是視圖輔助器方法,為什么叫這個(gè)名字呢,因?yàn)樗鼛椭覀兩梢晥D中所需的HTML代碼,那么我們想過沒有這些個(gè)視圖輔助器方法是根據(jù)幫助我們生成HTML代碼的呢?對(duì)了,就是根據(jù)Model元數(shù)據(jù),現(xiàn)在就可以把Model元數(shù)據(jù)對(duì)象想象成封裝著Customer類型中的各種展示信息,細(xì)心的朋友可能發(fā)現(xiàn)圖1-2中少了點(diǎn)什么,Customer的Address屬性沒有展示出來,為什么呢?這些問題和Model元數(shù)據(jù)的生成過程以及它的對(duì)象結(jié)構(gòu)在后續(xù)的篇章中會(huì)講解到。

可能前篇鋪墊了這么多后面就是一張圖來說明什么是Model元數(shù)據(jù)有點(diǎn)坑,為了初學(xué)者沒有考慮到大神們的感受,因?yàn)槲抑牢覄偨佑|這部分知識(shí)的時(shí)候最想了解什么,所以望大神們勿噴。有了這個(gè)基礎(chǔ)對(duì)后續(xù)文章的理解有很大的幫助,也會(huì)讓大家在大腦中留個(gè)印象。

 

文章題目:ASP.NETMVCModel元數(shù)據(jù)(一)
轉(zhuǎn)載源于:http://bm7419.com/article32/gipcpc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、網(wǎng)站內(nèi)鏈網(wǎng)站設(shè)計(jì)、域名注冊、網(wǎng)站營銷、

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化