欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

ASP.NETMVCModel綁定(一)-創(chuàng)新互聯(lián)

ASP.NET MVC Model綁定(一)

前言

ModelMetadata系列的結(jié)束了,從本篇開(kāi)始就進(jìn)入Model綁定部分了,這個(gè)系列閱讀過(guò)后你會(huì)對(duì)Model綁定有個(gè)比較清楚的了解, 本篇對(duì)于Model綁定器的最基礎(chǔ)的應(yīng)用作個(gè)簡(jiǎn)單的示例展示,目的在于讓大家事先了解一下Model綁定器是什么樣的便于后續(xù)篇幅的理解。

成都創(chuàng)新互聯(lián)公司,為您提供重慶網(wǎng)站建設(shè)公司成都網(wǎng)站制作、網(wǎng)站營(yíng)銷推廣、網(wǎng)站開(kāi)發(fā)設(shè)計(jì),對(duì)服務(wù)成都橡塑保溫等多個(gè)行業(yè)擁有豐富的網(wǎng)站建設(shè)及推廣經(jīng)驗(yàn)。成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)公司成立于2013年,提供專業(yè)網(wǎng)站制作報(bào)價(jià)服務(wù),我們深知市場(chǎng)的競(jìng)爭(zhēng)激烈,認(rèn)真對(duì)待每位客戶,為客戶提供賞心悅目的作品。 與客戶共同發(fā)展進(jìn)步,是我們永遠(yuǎn)的責(zé)任!

Model綁定

  • IModelBinder、自定義Model綁定器簡(jiǎn)單實(shí)現(xiàn)

  • Model綁定器在MVC框架中的位置

  • MVC中的默認(rèn)Model綁定器生成過(guò)程

  • IModelBinderProvider的簡(jiǎn)單應(yīng)用

  • IValueProvider在MVC框架中生成的位置以及過(guò)程

  • IValueProvider的應(yīng)用場(chǎng)景

  • IValueProvider的實(shí)現(xiàn)之NameValueCollectionValueProvider

IModelBinder、自定義Model綁定器簡(jiǎn)單實(shí)現(xiàn)

Model綁定器在前面的篇幅示例中也有涉及到,在本篇中重新講一下,看過(guò)前面篇幅的朋友可以大概的瀏覽一下本篇,然后跳至下一篇了。

對(duì)于Model綁定器系統(tǒng)提供了一個(gè)默認(rèn)的綁定器DefaultModelBinder類型,而它實(shí)現(xiàn)了IModelBinder接口,我們來(lái)看一下IModelBinder接口的定義,代碼1-1.

代碼1-1

public interface IModelBinder
    {
        // 摘要:
        //     使用指定的控制器上下文和綁定上下文將模型綁定到一個(gè)值。
        //
        // 參數(shù):
        //   controllerContext:
        //     控制器上下文。
        //
        //   bindingContext:
        //     綁定上下文。
        //
        // 返回結(jié)果:
        //     綁定值。
        object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext);
    }

看到代碼1-1中,IModelBinder接口中定義了一個(gè)BindModel()方法,并且有兩個(gè)參數(shù),通過(guò)系統(tǒng)提供給我們的注釋了解到,一個(gè)是控制器上下文對(duì)象,還有一個(gè)是綁定器上下文對(duì)象,控制器上下文對(duì)象的意思就是在當(dāng)前控制器所執(zhí)行范圍內(nèi)的所有基礎(chǔ)信息都包含在其中,同理綁定上下文也是。后續(xù)的篇幅會(huì)對(duì)這一系列的上下文對(duì)象作詳細(xì)的介紹,這里就帶過(guò)了。

現(xiàn)在我們來(lái)實(shí)現(xiàn)IModelBinder接口定義個(gè)自己的Model綁定器,當(dāng)然了也可以繼承自DefaultModelBinder類型重寫(xiě)一下BindModel()方法。我們來(lái)看一下我們的自定義實(shí)現(xiàn),代碼1-2.

代碼1-2

using System.Web.Mvc;
using ConsoleApplication2;

namespace MvcApplication.Binders
{
    public class MyCustomModelBinder:IModelBinder
    {
        public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            return new Customer()
            {
                CustomerID = "010",
                Name = "測(cè)試人員",
                RegistrationDate = DateTime.Now,
                Address = new Address()
                {
                    AddressName = "天空之城"
                }
            };
        }
    }

}

對(duì)于ConsoleApplication2命名空間的引用是因?yàn)閂iewModel被定義在了那里,也就是代碼1-2中BindModel()方法所要返回的類型,在代碼1-2中我們只是簡(jiǎn)單的實(shí)例化了一個(gè)ViewModel(Customer類型),實(shí)際可以做的操作非常多。我們?cè)倏匆幌耉iewModel的定義,代碼1-3。

代碼1-3

public class Customer
    {
        [HiddenInput(DisplayValue=false)]
        public string CustomerID { get; set; }

        [Display(Name="姓名")]
        [UIHint("Password")]
        public string Name { get; set; }

        [DataType(DataType.Date)]
        [Display(Name="注冊(cè)日期")]
        public DateTime RegistrationDate{ get; set; }

        [UIHint("Address")]
        public Address Address { get; set; } 
    }
    public class Address
    {
        [Display(Name="地址名稱")]
        [MyCustomMetadataAware]
        public string AddressName { get; set; }
    }

代碼1-3就是ViewModel的定義了,其中包含的一些信息有不清楚的可以在看完本篇后去看ASP.NET MVC Model元數(shù)據(jù)系列。

現(xiàn)在我們看一下控制器方法的定義,代碼1-4.

代碼1-4

        public ViewResult Show(Customer customer)
        {
            return View(customer);
        }

為什么ViewModel要以作為控制器方法參數(shù)的方式來(lái)進(jìn)行Model綁定呢?這個(gè)疑問(wèn)在下篇中會(huì)解決。

看一下代碼1-5,作為Show方法對(duì)應(yīng)視圖的代碼:

代碼1-5

@model ConsoleApplication2.Customer
@{
    ViewBag.Title = "Show";
}
<h3>Show</h3>
<p>@Html.EditorForModel()</p>
<p>@Html.EditorFor(m=>Model.Address)</p>

這樣就完成了基礎(chǔ)的工作了,不過(guò)還是運(yùn)行不了,因?yàn)槲覀冏远x的Model綁定器還沒(méi)有定義到系統(tǒng)中,在項(xiàng)目的Global.asax文件中的MvcApplication類型的Application_Start()方法中添加如代碼1-6。

代碼1-6

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

當(dāng)然了也不限于在這里添加,只要在授權(quán)過(guò)濾器執(zhí)行之前的任何一個(gè)地方都行,因?yàn)樵谑跈?quán)過(guò)濾器執(zhí)行過(guò)后便會(huì)對(duì)Model綁定器進(jìn)行生成了,下篇會(huì)有講解。在這里添加只不過(guò)這里是MVC最先執(zhí)行的地方。現(xiàn)在我們運(yùn)行查看結(jié)果了。

圖1

ASP.NET MVC Model綁定(一)

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開(kāi)啟,新人活動(dòng)云服務(wù)器買多久送多久。

新聞標(biāo)題:ASP.NETMVCModel綁定(一)-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://www.chinadenli.net/article12/dgesdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄網(wǎng)站策劃用戶體驗(yàn)虛擬主機(jī)標(biāo)簽優(yōu)化軟件開(kāi)發(fā)

廣告

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

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