<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      ASP.NET MVC三個重要的描述對象:ParameterDescriptor

      Model綁定是為作為目標Action的方法準備參數列表的過程,所以針對參數的描述才是Model綁定的核心。在ASP.NET MVC應用編程接口中,服務于Model綁定的參數元數據通過ParameterDescriptor類型來表示,而ActionDescriptor的GetParameters方法返回的就是一個ParameterDescriptor數組。

      如下面的代碼片斷所示,ParameterDescriptor同樣實現了ICustomAttributeProvider接口提供應用在相應參數上的特性。ParameterDescriptor的只讀屬性ActionDescriptor表示描述所在Action方法的ActionDescriptor對象。屬性ParameterName、ParameterType和DefaultValue分別表示參數的名稱、類型和默認值。

         1: public abstract class ParameterDescriptor : ICustomAttributeProvider
         2: {   
         3:     public virtual object[] GetCustomAttributes(bool inherit);
         4:     public virtual object[] GetCustomAttributes(Type attributeType, bool inherit);
         5:     public virtual bool IsDefined(Type attributeType, bool inherit);
         6:     
         7:     public abstract ActionDescriptor ActionDescriptor { get; }
         8:     public abstract string ParameterName { get; }
         9:     public abstract Type ParameterType { get; }
        10:     public virtual object DefaultValue { get; }
        11:  
        12:     public virtual ParameterBindingInfo BindingInfo { get; }
        13: }

      ParameterDescriptor的只讀屬性BindingInfo表示的System.Web.Mvc.ParameterBindingInfo對象封裝一些信息用于控制請求數據與參數的綁定行為。如下面的代碼片斷所示,抽象類ParameterBindingInfo具有四個屬性,其中類型為IModelBinder的Binder屬性返回的ModelBinder對象是整個Model綁定的核心,我們將在本章后續部分進行單獨介紹。

         1: public abstract class ParameterBindingInfo
         2: {
         3:     public virtual IModelBinder Binder { get; }
         4:     
         5:     public virtual ICollection<string> Include { get; }
         6:     public virtual ICollection<string> Exclude { get; }
         7:     public virtual string Prefix { get; }
         8: }

      如果參數類型是一個復雜類型,默認情況下會綁定其所有公共可讀寫屬性,而兩個ICollection<string>類型的屬性Include和Exclude表示顯示設置的參與/不參與綁定的屬性名稱列表。在默認情況下,請求數據與參數之間嚴格按照名稱進行綁定,但是有時候請求數據名稱具有相應的前綴,這個前綴體現在ParameterBindingInfo的Prefix屬性上。

      ReflectedParameterDescriptor

      原生的ParameterBindingInfo是通過針對表示參數的ParameterInfo進行反射獲得,這樣的ParameterBindingInfo通過ReflectedParameterDescriptor類型表示。如下面的代碼片斷所示,這個ParameterInfo對象通過只讀屬性ParameterInfo表示,并在構造函數中被初始化。

         1: public class ReflectedParameterDescriptor : ParameterDescriptor
         2: {   
         3:     public ReflectedParameterDescriptor(ParameterInfo parameterInfo, ActionDescriptor actionDescriptor);
         4:     public override object[] GetCustomAttributes(bool inherit);
         5:     public override object[] GetCustomAttributes(Type attributeType, bool inherit);
         6:     public override bool IsDefined(Type attributeType, bool inherit);
         7:     
         8:     public override ActionDescriptor ActionDescriptor { get; }
         9:     public override ParameterBindingInfo BindingInfo { get; }
        10:     public override object DefaultValue { get; }
        11:     public override string ParameterName { get; }
        12:     public override Type ParameterType { get; }
        13:     
        14:     public ParameterInfo ParameterInfo { get; }
        15: }

      ReflectedParameterDescriptor的BindingInfo屬性返回的是一個ReflectedParameterBindingInfo對象,這是一個內部類型。該BindingInfo的Include、Exclude和Prefix屬性來源于對應用在參數上的BindAttribute特性的解析。如下面的代碼片斷所示,BindAttribute中同樣定義了這三個屬性,其中Include和Exclude為通過逗號作為分隔符的屬性名稱列表。

         1: [AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Class, AllowMultiple=false, Inherited=true)]
         2: public sealed class BindAttribute : Attribute
         3: {
         4:     public bool IsPropertyAllowed(string propertyName);   
         5:     
         6:     public string Include { get; set; }
         7:     public string Exclude { get; set; }
         8:     public string Prefix { get; set;}
         9: }

      布爾返回類型的IsPropertyAllowed方法用于判斷指定的屬性是否允許綁定,當指定在屬性名在Include列表中(或者Include列表為空)并且不在Exclude列表的情況下返回True,否則返回False。

      ASP.NET MVC三個重要的描述對象:ControllerDescriptor
      ASP.NET MVC三個重要的描述對象:ActionDescriptor
      ASP.NET MVC三個重要的描述對象:ControllerDescriptor與ActionDescriptor的創建機制
      ASP.NET MVC三個重要的描述對象:ParameterDescriptor

      posted @ 2012-05-13 18:37  Artech  閱讀(6873)  評論(7)    收藏  舉報
      主站蜘蛛池模板: 国产女同一区二区在线| 男女激情一区二区三区| 深夜免费av在线观看| 国产精品视频中文字幕| 日本高清一区免费中文视频| 日本高清在线观看WWW色| 国产高清在线男人的天堂| 亚洲午夜爱爱香蕉片| 东京热加勒比无码少妇| 成人免费无遮挡无码黄漫视频| 大地资源免费视频观看| 亚洲中文字幕无码一久久区| 国产成人午夜福利在线小电影| 深夜福利资源在线观看| 视频专区熟女人妻第二页| 日本一区二区国产在线| 视频二区中文字幕在线| 思思99热精品在线| 国产精品久久久久久久久久妞妞| 99久久精品费精品国产一区二 | 日韩深夜免费在线观看| 久久99精品久久久久麻豆| 久久久久中文伊人久久久| 亚洲av男人电影天堂热app| yy111111少妇无码影院| 国产精品自拍一二三四区| 少妇粗大进出白浆嘿嘿视频| 国产老妇伦国产熟女老妇高清| 欧美亚洲另类制服卡通动漫| 美乳丰满人妻无码视频| 揭阳市| 暖暖影院日本高清...免费| 国产精品久久久久久久久电影网| 亚洲各类熟女们中文字幕| 国产精品一码二码三码| A级孕妇高清免费毛片| 亚洲国产av剧一区二区三区 | 欧美高清狂热视频60一70| 无码人妻精品一区二区三区66| 久久久久成人精品无码中文字幕| 班玛县|