程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET MVC三個重要的描述對象:ParameterDescriptor

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

編輯:關於ASP.NET

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屬性上。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved