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

MVC HtmlHelper与FluentValidation 3.1:获取ModelMetadata IsRequired的麻烦

以下是关于MVC HtmlHelper与FluentValidation 3.1:获取ModelMetadata IsRequired的问题的答案:

MVC HtmlHelper是ASP.NET MVC框架中用于生成HTML标记的一个辅助类,它提供了一系列的扩展方法,可以帮助开发人员更方便地生成HTML标记,包括表单元素、链接、按钮等等。

FluentValidation是一个用于ASP.NET MVC和Web API的验证库,它提供了一种更加灵活、更加简洁的方式来定义验证规则,并且支持链式调用。

在使用FluentValidation进行验证时,有时需要获取ModelMetadata中的IsRequired属性,以便根据该属性生成不同的验证规则。在FluentValidation 3.1中,可以通过以下方式获取ModelMetadata中的IsRequired属性:

代码语言:csharp
复制
var metadata = ModelMetadataProviders.Current.GetMetadataForProperty(null, typeof(TModel), propertyName);
var isRequired = metadata.IsRequired;

其中,TModel是模型的类型,propertyName是需要获取的属性名称。

需要注意的是,在使用FluentValidation进行验证时,建议使用FluentValidation中的验证规则来进行验证,而不是直接获取ModelMetadata中的IsRequired属性。这是因为FluentValidation中的验证规则更加灵活,更加易于维护,而且可以更好地支持不同的验证场景。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ASP.NET MVCModel元数据Model模板:将”ListControl”引入ASP.NET MVC

对于ASP.NET MVC来说,我们可以通过HtmlHelper/HtmlHelper扩展方法DropDownList/DropDownListFor和ListBox/ListBox在界面上呈现一个下拉框和列表框...如下面的代码片断所示,IListProvider具有唯一方法GetListItems根据指定列表名称获取所有的列表项。...获取指定列表名称所有列表项并生成相应SelectListItem列表,最终通过调用HtmlHelper现有的扩展方法ListBox和DropDownList实现HTML呈现。...["ListName"]; 26: @Html.CheckBoxList("", listName, Model) 27: } ASP.NET MVCModel元数据Model模板...:预定义模板 ASP.NET MVCModel元数据Model模板:模板获取执行策略 ASP.NET MVCModel元数据Model模板:将ListControl引入ASP.NET MVC

4.8K60
  • ASP.NET MVCModel元数据Model模板:模板获取执行策略

    本篇文章着重讨论模板获取和执行机制,不过在这之前,顺便来讨论一下DataTypeAttribute和模板关系。[本文已经同步到《How ASP.NET MVC Works?》...二、模板获取执行 当我们调用HtmlHelper或者HtmlHelper模板方法对整个Model或者Model某个数据成员以某种模式(显示模式或者编辑模式)进行呈现时候,通过预先创建代表...我们以针对HtmlHelper扩展方法DisplayFor为例,看看针对通过表达式expression获取Model对象是如何以显示模式呈现出来。...,如果通过参数expression表示Model获取表达式是针对某个属性,那么属性名会被获取出来。...ASP.NET MVCModel元数据Model模板:预定义模板 ASP.NET MVCModel元数据Model模板:模板获取执行策略 ASP.NET MVCModel元数据Model

    1.7K60

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

    阅读目录: 4.ModelMetadataModelMetadata元数据如何支撑ModelView之间组合关系) 4.1.ModelMetadata元数据结构(元数据数据实体结构关系) 4.2...6.4.使用System.ComponentModel.DataAnnotations中获取元数据设置特性功能 4.ModelMetadataModelMetadata元数据如何支撑ModelView...()、DisplayFor()方法进行选择; 这是一个最基本MVC使用方式,Customer是需要View进行显示ViewModel,在View中通过HtmlHelper扩展方法对Customer实体生成编辑...进行控制,因为最终生成这些HTML是根据Model元数据来定,准确点讲HtmlHelper对象和一系列围绕HtmlHelper扩展方法都是基于某个ViewModelModelMetadata进行最终生成...,前提是我们得很清楚它是如何控制HTMLDOM输出,到底是如何HtmlHelper对象协调,又如何参与到元数据设置当中; 5.通过对ViewModel使用预定义Attribute设置ModelMetadata

    99950

    这算是ASP.NET MVC一个大BUG吗?

    这是昨天一个同事遇到问题,我觉得这是一个蛮大问题,而且不像是ASP.NET MVC设计者有意为之,换言之,这可能是ASP.NET MVC一个Bug(不过也有可能是保持原始请求数据而作妥协)。...通过查看ASP.NET MVC框架自身代码,我想这个问题根源应该源于InputExtensions类型InputHelper方法。...如下所示,当InputHelper在指定表单元素值得时候,会先从当前ModelState中获取,如果该值在ModelState中不存在,才会从当前ViewData中获取。...htmlHelper, InputType inputType, ModelMetadata metadata, string name, object value, bool useViewData...不过我还是觉得这样设计有违MVC基本原则,MVC处理请求流程很清楚:客户端(浏览器)向定义在Controller中某个Action方法发送请求,Action方法处理这个请求,并呈现出相应View

    82580

    ASP.NET MVCModel元数据Model模板:预定义模板

    通过ModelMetadata表示Model元数据一个主要作用在于为定义在HtmlHelperHtmlHelper模板方法(这些模板方法包括Display/DisplayFor...UI界面上HTML呈现方式,实际上在ASP.NET MVC内部还定义了一系列预定义模板。...当我们调用HtmlHelper/HtmlHelper模板方法对Model或者Model某个成员进行呈现时候,系统会根据当前呈现模式(显示模式和编辑模式)和Model元数据获取一个具体模板...特性就是将表示Model元数据ModelMetadata对象TemplateHint属性设置为HiddenInput。...Model元数据Model模板:预定义模板 ASP.NET MVCModel元数据Model模板:模板获取执行策略 ASP.NET MVCModel元数据Model模板:将ListControl

    5.8K110

    在ASP.NET MVC中使用“RadioButtonList”和“CheckBoxList”

    在《为HtmlHelper添加一个RadioButtonList扩展方法》中我通过对HtmlHelperHtmlHelper扩展使我们可以采用”RadioButtonList”方式对一组类型为...和我很多文章一样,旨在提供一种大体解决方案,本解决方案旨在解决如下一些问题: 通过独立组件对绑定到ListControl(ASP.NET Web Form说法)列表进行单独管理; 自动地调用上面这个组件获取列表信息进行相关...Html生成; 支持ASP.NET MVC原生Model Binding。...我们通过CodeManager得到列表集合,通过HtmlHelper结合 ModelMetadata得到当前数据,最终借助于ListControlUtilGenerateHtml生成相关Html。...metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);

    1.3K80

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

    当Model元数据被创建出来后,会先获取上述这一系列标注特性对其进行初始化,然后获取应用在目标元素上所有实现了IMedataAware接口特性,并将初始化ModelMetadata对象作为参数调用...这个针对HTML标记验证通过ModelMetadataRequestValidationEnabled来控制,如下面的代码片断所示,这是一个布尔类型可读写属性。...在该View中,我们直接调用HtmlHelperEditorForModel方法将Foo对象以编辑模式呈现出来。...该特性属性DisplayName/ResourceTypeDisplayAttributeName/ResourceType具有相同作用,唯一不同是DisplayTextAttribute这两个属性均是可以缺省...ASP.NET MVC Model元数据及其定制: 初识Model元数据 ASP.NET MVC Model元数据及其定制: Model元数据定制 ASP.NET MVC Model元数据及其定制

    97460

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

    在《ASP.NET MVC四种验证编程方式》一文中我们介绍了ASP.NET MVC支持四种服务端验证编程方式(“手工验证”、“标注ValidationAttribute特性”、“让数据类型实现IValidatableObject...一、ModelValidatorModelValidatorProvider 虽然Model绑定方式因被验证数据类型差异而有所不同,但是ASP.NET MVC总是使用一个名为ModelValidator...IsRequired表示该ModelValidator是否对目标数据进行“必需性”验证(即被验证数据成员必须具有一个具体值),该属性默认返回False。...我们知道ASP.NET MVC大都采用Provider模式来提供相应组件,比如描述Model元数据ModelMetadata通过对应ModelMetadataProvider来提供,实现Model...二、DataAnnotationsModelValidator 我们在《ASP.NET MVC四种验证编程方式》中介绍了三种不同“自动化验证”编程方式,ASP.NET MVC在内部会采用不同ModelValidator

    98180

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

    由于接下来项目中不再打算使用Razor引擎,该引擎虽然很不错,但也有一些问题,例如存在HTML5代码HtmlHelper混写,使得UI层很难业务代码层完全分离。...其使用System.Web.Mvc.ModelMetadata来表示Model元数据,并且ModelMetadata是一种迭代,支持自包含结构,有点像组合模式。...HiddenInput Html Text&String Url MultilineText Password Decimal Boolean Collection Object     最后用一个简图介绍下ModelMetadata...可以看到,ModelMetadata是会进行缓存,并且通过原型模式进行创建,在.NET中经常可以看到Provider,这儿主要起一个提供者作用,但工厂类等其他创建型模式有什么区别仍然不是很清楚,还需要加强理解...无论是最开始WinForm, WebForm, 还是现在WPF,ASP.NET MVC,只要是前台页面数据源相关内容,都离不开这个概念,该概念实现极大简化了相关开发工作。

    92550

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

    [本文已经同步到《How ASP.NET MVC Works?》...如下面的代码片断所示,ModelValidator具有一个布尔类型只读属性IsRequired,表示该ModelValidator是否是对目标数据进行必要性验证,默认返回False。...,这是ASP.NET MVC 提供默认Model验证方式。...如下面的代码片断所示,这两个ClientModelValidator用于表示验证数据类型字符串分别是“number”和“date”。而表示错误消息字符串是从内部维护资源文件中获取。...如下面的代码片断所示,IDataErrorInfo具有两个成员,只读属性Error用于获取基于自身错误消息,而只读索引用于返回指定数据成员错误消息。

    1.5K10

    dotNET Core 3.X 使用 Web API

    Nuget包:Microsoft.AspNetCore.Mvc.NewtonsoftJson 另: 有关 3.x 中被删除程序集可以参考这里:https://github.com/dotnet/aspnetcore...获取 URL 地址中参数,可以自动推断; [FromBody]:从HTTP Body取值,通常用于取JSON, XML,可以自动推断; [FromHeader]:获取 Request Header 中参数信息...接口 使用第三方验证库,比如 FluentValidation Data Annotations 1、在 User 实体类上添加相关特性 public class User { [Required...FluentValidation FluentValidation 就不多做介绍了,可以参见官方文档:https://fluentvalidation.net/ ModelBinder ModelBinder...view=aspnetcore-3.1 数据塑形 在 API 中返回结果到前端时,一般不会直接将底层 Entity 返回,会创建相对应 Dto,比如,用户 Entity 是这样 public class

    1.6K30

    通过实例模拟ASP.NET MVCModel绑定机制:数组

    ValueProvider基于索引匹配策略也可以通过HtmlHelper模板方法EditorFor来体现。...如下面的代码片断所示,在一个Model类型为Contact数组强类型View中,我们调用HtmlHelper扩展方法EditorFor将数组前两个元素相关信息以编辑模式呈现出来。...如果这些元素存在于一个提交标单中,并且目标Action方法包含一个匹配Contact数组类型参数,Model绑定系统将最终生成两个元素Contact数组作为其参数值,数组中元素顺序索引数值保持一致...索引数据项名称为“index”,并且数组元素数据项具有相同前缀。...Model绑定机制:简单类型+复杂类型 通过实例模拟ASP.NET MVCModel绑定机制:数组 通过实例模拟ASP.NET MVCModel绑定机制:集合+字典

    3.3K90

    ASP.NET MVC客户端验证:jQuery验证在Model验证中实现

    服务端验证最终实现在相应ModelValidator中,而最终验证规则定义在相应ValidationAttribute中;而客户端验证规则通过HtmlHelper相应扩展方法(比如...中] 一、ValidationAttributeHTML ASP.NET MVC默然采用基于ValidationAttribute特性声明式Model验证,服务端验证最终实现在两个重写IsValid...在一个以此Contact为Model类型View中,如果我们调用HtmlHelper扩展方法EditorForModel,最终会生成如下一段HTML。...我们现在关心是当我们调用HtmlHelper相应扩展方法将Model对象某个属性以表单输入元素形式呈现时候是如何生成这些以“data-val-”为前缀验证属性呢?...ASP.NET MVC客户端验证:jQuery验证 ASP.NET MVC客户端验证:jQuery验证在Model验证中实现 ASP.NET MVC客户端验证:自定义验证

    7.1K70

    通过实例模拟ASP.NET MVCModel绑定机制:简单类型+复杂类型

    Action方法ActionDescriptor获取最终执行该方法所有参数值。...而ValueProvider采用数据源是一个扁平数据结构,它通过基于属性名称前缀Key实现这个对象树中对应叶子节点映射。...实际上当我们调用HtmlHelper模板方法EditorFor/EditorForModel时候就是按照这样匹配方式对标单元素进行命名。...假设在将Contact作为Model类型强类型View中,我们通过调用HtmlHelper扩展方法EditorFor将Model对象所有信息以编辑模式呈现出来。...Model绑定机制:简单类型+复杂类型 通过实例模拟ASP.NET MVCModel绑定机制:数组 通过实例模拟ASP.NET MVCModel绑定机制:集合+字典

    1.9K80

    ASP.NET MVC如何实现自定义验证(服务端验证+客户端验证)

    ASP.NET MVC通过Model验证帮助我们很容易实现对数据验证,在默认情况下,基于ValidationAttribute声明是验证被使用,我们只需要将相应ValidationAttribute...对于自定义验证,我们也只需要定义相应Validation就可以了,不过服务端验证比较简单,而客户端验证就要稍微复杂一些,本文提供一个简单实例说明在ASP.NET MVC中实现自定义验证基本步骤。...而该参数实际上是在添加adapter时从通过上面定义GetClientValidationRules方法生成验证规则中获取。...现在我们将AgeRangeAttribute 应用到一个简单ASP.NET MVC应用中。...View定义,我们直接调用HtmlHelper扩展方法EditorModel将作为ModelPerson对象以编辑模式呈现在一个表单中。

    3.9K50

    ASP.Net MVC开发基础学习笔记:二、HtmlHelper扩展方法

    在ASP.Net MVC中微软并没有提供类似服务器端控件那种开发方式,毕竟微软MVC就是传统请求处理响应回归。所以抛弃之前那种事件响应模型,抛弃服务器端控件也理所当然。   ...继续反编译查看,在System.Web.Mvc命名空间下HtmlHelper类型如下图所示,经过MSDN大神讲解,HtmlHelper支持在视图中呈现 HTML 控件。...这里就涉及到一个叫做“扩展方法”东东了,HtmlHelper扩展方法在 System.Web.Mvc.Html 命名空间中。 ...三、随时随地我也能扩展—HtmlHelper扩展方法简介 3.1 扩展方法简介   借助MSDN介绍:“扩展方法使你能够向现有类型“添加”方法,而无需创建新派生类型、重新编译或以其他方式修改原始类型...,于是我们将命名空间HtmlHelper类所在命名空间保持一致。

    69920

    .NETASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)

    不仅用来呈现数据还充当着远程SOA接口通讯DTO作用,如果为了结构清晰完全可以将ViewModelDTO分开,但是有时候我们确实需要考虑额外性能开销(有时候我们只能接受历史遗留问题,技术债务累积多久就要还多久...上迁移到外部去,这其中主要问题域就是将ModelMetadata设置项View绑定,而不是ViewModel; 只有先准确找到问题域之后我们才能设计DSL来充分表达这个问题域,通过XML能很好表达任何特定领域结构模型...目前对ViewModel中设置元数据控制特性都会作用于使用该ViewModel所有View,我们要解决问题是将上图中ModelMetadata域提取出去View进行绑定,从而得到一个干净ViewModel...,这样我们才能将原来获取元数据方式改变成我们自己获取策略;在元数据提供程序对象模型中主要功能分为两部分(这里我们只介绍获取元数据过程): ?...(远程Service); 迁移ModelMetadate缓存数据(紧要关头可以进行内存优化) 在ASP.NETMVC内部提供了用来获取某个ViewModelModelMetadata提供程序,通过该入口我们将可以把

    65750
    领券