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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索参数
, 属性
, 类型
, public
, abstract
, virtual
IsDefined
,以便于您获取更多的相关知识。

时间: 2024-10-30 00:12:15

ASP.NET MVC三个重要的描述对象:ParameterDescriptor的相关文章

ASP.NET MVC三个重要的描述对象:ControllerDescriptor和ActionDescriptor的创建

不论是用于描述Controller的ControllerDescriptor,还是用于描述Action方法的ActionDescriptor,都具有同步和异步两个版本,那么这些不同类型的ControllerDescriptor的ActionDescriptor是在什么情况下创建的呢? 一.ControllerActionInvoker与AsyncControllerActionInvoker ControllerDescriptor的创建设计到一个重要的名为ActionInvoker的组件,顾名

ASP.NET MVC三个重要的描述对象:ControllerDescriptor

ASP.NET MVC应用的请求都是针对某个Controller的某个Action方法,所以对 请求的处理最终体现在对目标Action方法的执行.而Action方法具有相应的参数 ,所以在方法执行之前必须根据相应的规则从请求中提取相应的数据并将其转换 为Action方法参数列表,我们将这个过程称为Model绑定.在ASP.NET MVC应用编 程接口中,Action方法某个参数的元数据通过ParameterDescriptor表示,而两个 相关的类型ControllerDescriptor和Ac

ASP.NET MVC三个重要的描述对象:ActionDescriptor

在Model绑定过程中会通过激活的Controller类型创建用于描述它的 ControllerDescriptor对象.Controller是一组Action方法的集合,而每一个 Action通过ActionDescriptor对象来表示,在这篇文章中我们就来着重谈谈不同 类型的ActionDescriptor.[本文已经同步到<How ASP.NET MVC Works?>中] 一.ActionDescriptor 用于描述定义在Controller类中的Action方法的ActionDe

ASP.NET MVC三个重要的描述对象:ControllerDescriptor与ActionDescriptor

ControllerDescriptor与ActionDescriptor的创建 不论是用于描述Controller的ControllerDescriptor,还是用于描述Action方 法的ActionDescriptor,都具有同步和异步两个版本,那么这些不同类型的 ControllerDescriptor的ActionDescriptor是在什么情况下创建的呢? 一.ControllerActionInvoker与AsyncControllerActionInvoker Controlle

七天学会ASP.NET MVC (三)——ASP.Net MVC 数据处理

  第三天我们将学习Asp.Net中数据处理功能,了解数据访问层,EF,以及EF中常用的代码实现方式,创建数据访问层和数据入口,处理Post数据,以及数据验证等功能. 系列文章 七天学会ASP.NET MVC (一)--深入理解ASP.NET MVC 七天学会ASP.NET MVC (二)--ASP.NET MVC 数据传递 七天学会ASP.NET MVC (三)--ASP.Net MVC 数据处理 七天学会ASP.NET MVC (四)--用户授权认证问题 七天学会ASP.NET MVC (五

学习ASP.NET MVC(三) Controller/Action 深入解析与应用实例

一.摘要 一个Url请求经过了Routing处理后会调用Controller的Action方法. 中间的过程是怎样的? Action方 法中返回ActionResult对象后,如何到达View的? 本文将讲解Controller的基本用法, 深入分析 Controller的运行机制, 并且提供了创建所有类型Action的代码. 值得学习ASP.NET MVC时参考. 二.承上启下 在上一篇文章中, 我已经学会了如何使用Routing获取Controller和Action, 随后的程序会调用 Co

ASP.NET MVC的运行机制

一.ASP.NET + MVC IIS与ASP.NET管道 MVC.MVP以及Model2[上篇] MVC.MVP以及Model2[下篇] ASP.NET MVC是如何运行的[1]: 建立在"伪"MVC框架上的Web应用 ASP.NET MVC是如何运行的[2]: URL路由 ASP.NET MVC是如何运行的[3]: Controller的激活 ASP.NET MVC是如何运行的[4]: Action的执行 二.URL 路由 ASP.NET的路由系统:URL与物理文件的分离 ASP.

How ASP.NET MVC Works?

一.ASP.NET + MVC IIS与ASP.NET管道 MVC.MVP以及Model2[上篇] MVC.MVP以及Model2[下篇] ASP.NET MVC是如何运行的[1]: 建立在"伪"MVC框架上的Web应用 ASP.NET MVC是如何运行的[2]: URL路由 ASP.NET MVC是如何运行的[3]: Controller的激活 ASP.NET MVC是如何运行的[4]: Action的执行 二.URL 路由 ASP.NET的路由系统:URL与物理文件的分离 ASP.

ASP.NET MVC下的四种验证编程方式[续篇]

原文:ASP.NET MVC下的四种验证编程方式[续篇] 在<ASP.NET MVC下的四种验证编程方式>一文中我们介绍了ASP.NET MVC支持的四种服务端验证的编程方式("手工验证"."标注ValidationAttribute特性"."让数据类型实现IValidatableObject或者IDataErrorInfo"),那么在ASP.NET MVC框架内部是如何提供针对这四种不同编程方式的支持的呢?接下来我们就来聊聊这背后的