溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時間:2020-08-22 18:41:06 來源:網(wǎng)絡(luò) 閱讀:1230 作者:jinyuan0829 欄目:編程語言

 

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

前言

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

 

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)它。

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

代碼1-2

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

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

圖1-1

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

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

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

代碼1-3

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

這時候還不能調(diào)試,需要在我們在項目中新建個文件夾,命名為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)該定義在項目的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());

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

圖1-2

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

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

圖1-3

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

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

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

可能前篇鋪墊了這么多后面就是一張圖來說明什么是Model元數(shù)據(jù)有點坑,為了初學(xué)者沒有考慮到大神們的感受,因為我知道我剛接觸這部分知識的時候最想了解什么,所以望大神們勿噴。有了這個基礎(chǔ)對后續(xù)文章的理解有很大的幫助,也會讓大家在大腦中留個印象。

 

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI