首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ASP.NET MVC以ModelValidator为核心的Model验证体系: ModelValidatorProviders

这就是本篇文章论述的重点。[本文已经同步到《How ASP.NET MVC Works?》...三、CompositeModelValidator 虽然CompositeModelValidator仅仅是定义在程序集System.Web.Mvc.dll中的一个私有类型,但是它在ASP.NET MVC...定义在Validate方法中的验证逻辑是这样的:CompositeModelValidator通过在构造函数中初始化的表示验证对象类型的Model元数据的ModelMetadata对象的Properties...然后遍历该列表的每个ModelMetadata对象,调用其GetValidators方法得到一组用于验证属性值得ModelValidator列表,然后使用该ModelValidator列表依次对相应的属性值进行验证...在Action方法Index中,我们使用当前的ModelMetadataProvider创建了基于Contact类型的ModelMetadata,然后调用ModelValidator的静态方法GetValidator

1.6K60

ASP.NET MVC下的四种验证编程方式

在《ASP.NET MVC下的四种验证编程方式》一文中我们介绍了ASP.NET MVC支持的四种服务端验证的编程方式(“手工验证”、“标注ValidationAttribute特性”、“让数据类型实现IValidatableObject...一、ModelValidator与ModelValidatorProvider 虽然Model绑定的方式因被验证数据类型的差异而有所不同,但是ASP.NET MVC总是使用一个名为ModelValidator...我们知道ASP.NET MVC大都采用Provider的模式来提供相应的组件,比如描述Model元数据的ModelMetadata通过对应的ModelMetadataProvider来提供,实现Model...ASP.NET MVC 通过静态类型ModelValidatorProviders对使用的ModelValidatorProvider进行注册。...IValidatable接口,ASP.NET MVC会自动调用实现的Validate方法对其实施验证,此时创建的ModelValidator是一个ValidatableObjectAdapter对象。

98680
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ASP.NET MVC Model元数据及其定制: 初识Model元数据

    Contronoller激活之后,ASP.NET MVC会根据当前请求上下文得到目标Action的名称,然后解析出对应的方法并执行之。...ASP.NET MVC中的Model实际上View Model,表示最终绑定到View上的数据,而Model元数据描述了Model的数据结构,以及Model的每个数据成员的一些特性。...正是有了Model元数据的存在,才使模板化HTML的呈现机制成为可能。此外,Model元数据支撑了ASP.NET MVC的Model验证体系,因为针对Model的验证规则正是定义在Model元数据中。...ASP.NET MVC的Model元数据通过类型ModelMetadata表示。...ASP.NET MVC Model元数据及其定制: 初识Model元数据 ASP.NET MVC Model元数据及其定制: Model元数据的定制 ASP.NET MVC Model元数据及其定制

    1K90

    ASP.NET MVC Model元数据及其定制:一个重要的接口IMetadataAware

    如下面的代码片断所示,AllowHtmlAttribute是实现了IMetadataAware 接口,在OnMetadataCreated方法中它直接将作为参数的ModelMetadata对象的RequestValidationEnabled...在通过Visual Studio提供的ASP.NET MVC项目模板创建的空Web应用中,我们定义了如下一个数据类型Foo,其中属性Baz上应用了AllowHtmlAttribute特性。...在使用该特性的时候,我们需要显式制定表示显示名称的Name属性,如果需要进行本地化处理,需要将显示内容定义在某个资源文件中,并通过ResourceType属性指定该资源文件生成的类型。...接下来我们来演示如何使用这个DisplayTextAttribute特性来替换DisplayAttribute特性进行显示名称的设置,为此我们在通过Visual Studio的ASP.NET MVC 项目模板创建的空...ASP.NET MVC Model元数据及其定制: 初识Model元数据 ASP.NET MVC Model元数据及其定制: Model元数据的定制 ASP.NET MVC Model元数据及其定制

    98260

    快速入门系列--MVC--04模型

    其使用System.Web.Mvc.ModelMetadata来表示Model元数据,并且ModelMetadata是一种迭代,支持自包含的结构,有点像组合模式。...即使不使用Razor视图引擎,直接使用静态的HTML5页面,该模块仍然不可或缺。现在简单的介绍一下ASP.NET MVC中相关的Model绑定。     ...在ASP.NET MVC框架中,Model绑定本质上就是为目标Action方法生成参数列表的过程,这些参数列表的来源可能是请求的URL,可能是HTTP的请求头或请求体中,通过参数的元数据信息可以得到相关内容...今天学习的ASP.NET MVC中的Model的验证,刚开时会以为这一章会比较简单,因为之前已经学习过了Model元数据的解析、Model绑定,Model的验证可能就只是DataAnnotation相关类的介绍...ASP.NET MVC4框架揭秘[M]. 上海:电子工业出版社, 2012.

    93450

    通过实例模拟ASP.NET MVC的Model绑定的机制:集合+字典

    在本系列的前面两篇文章(《简单类型+复杂类型》、《数组》)我们通过创建的实例程序模拟了ASP.NET MVC默认使用的DefaultModelBinder对简单类型、复杂类型以及数组对象的Model绑定...现在我们按照相同的方式来分析基于集合和字典类型的Model绑定是如何实现的。[源代码从这里下载][本文已经同步到《How ASP.NET MVC Works?》...针对集合的Model绑定实现在方法BindCollectionModel中,我们按照数组绑定的方式得的针对目标集合对象的所有元素对象,并将其添加到一个List对象中,然后调用ReplaceHelper...的静态方法ReplaceCollection将该列表中的元素拷贝到预先创建的Model对象中。...MVC的Model绑定的机制:简单类型+复杂类型 通过实例模拟ASP.NET MVC的Model绑定的机制:数组 通过实例模拟ASP.NET MVC的Model绑定的机制:集合+字典

    1.8K70

    .NETASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)

    之间的组合关系) ModelMetadata是ASP.NETMVC中用来表示Model的元数据对象,它包含了一个Model的所有的相关元数据信息,当然这取决Model的使用方向,不同的使用方向会有不同类型的元数据...)要么编辑(Editor),上图中已经给出MVC默认生成的HTML格式;这是作为默认的方式输出,我们并没有参与到输出过程的任何环节中,要想控制ViewModel的某个属性的展现方式我们必须对ModelMetadata...特性是孤身一人在System.Web.Mvc命名空间中,这可能对你造成了一些理解上的困扰;明明是ASP.NETMVC框架使用的对象为什么会跑到System.ComponentModel.DataAnnotations...编程直接相关的(如:HiddenInput元数据库控制特性,用来隐藏HTML中的Input Dom元素),但是大部分都是位于组件对象模型命名空间中;这就会给我们带来一些疑问,为什么跟ASP.NETMVC...;在ASP.NETMVC中,我们使用这些数据注解特性来声明元数据控制选项,在其他的应用框架中如:WPF中,可能需要用来指定UI上的双向绑定事件,这些都是需要建立在这些数据注解特性上的; 6.4.使用System.ComponentModel.DataAnnotations

    1K50

    通过极简模拟框架让你了解ASP.NET Core MVC框架的设计与实现:参数绑定

    ,所以一个应用会涉及到针对多个IValueProvider对象的使用。...不论模型绑定支持多少种数据源,如果我们总是能够使用一个单一IValueProvider对象来提供模型绑定的数据项,这无疑会使模型绑定的设计变得更加简单。...如下所示的是模拟框架对该接口的简化定义,如代码片段所示,IModelBinderProvider接口定义了唯一的GetBinder方法根据提供的用于描述待绑定模型元数据的ModelMetadata对象来提供对应的...正如前面提到过的,在实现的BindAsync方法中,ComplexTypeModelBinder对象会从模型元数据中得到待绑定的目标类型,并通过反射的方式创建一个空的对象。...,我们在前面演示的应用程序中定义了如下这个HomeController类型。

    1.3K50
    领券