首页
学习
活动
专区
圈层
工具
发布

通过扩展改善ASP.NET MVC的验证机制

ASP.NET MVC提供一种基于元数据的验证方式是我们可以将相应的验证特性应用到作为Model实体的类型或者属性/字段上,但是这依然具有很多的不足。...在这篇文章中,我结合EntLib的VAB(Validation Application Block)的一些思想通过扩展为ASP.NET MVC提供一种更为完善的验证机制。...五、验证规则的一致性 一、扩展旨在解决怎样的验证问题 这个基于验证的扩展可以实现如下几个ASP.NET MVC无法实现验证问题: 消息提供机制的分离:目前我们可以通过“硬编码”和“资源文件”两种验证错误消息的提供机制...比如对于某个区间的验证消息就可以定义成“{0}必须在{1}与{2}之间”; 多语言的支持:和ASP.NET MVC基于资源文件(所有的ValidationAttribute可以通过指定属性Name和ResourceType...如果我们通过应用在AccountController上的RuleNameAttribute将验证规则设置为“Production” 1: [ValidationRule("Production")

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

    通过扩展改善ASP.NET MVC的验证机制

    ValidatorContext的属性RuleName和Culture表示当前的验证规则和语言文化(默认值为当前线程的CurrentUICulture),而字典类型的属性Properties用户存放一些额外信息...当前ValidationContext的获取与设置通过静态Current完成。...ActionInvoker在进行操作执行之前初始化上下文 通过《使用篇》中我们知道当前的验证规则名称是通过ValidationRuleAttribute来设置的,该特性不仅仅可以应用在Action方法上...至于为什么需需要这么做,可以参考我的上一篇文章《在ASP.NET MVC中如何应用多个相同类型的ValidationAttribute?》。...对于应用在同一个目标元素的多个相同类型的Validator特性,只有与当前ValidatorContext相匹配的才能执行,我们通过Match方法来进行匹配性的判断,具体的逻辑是这样的: 在显式设置了RuleName

    1K100

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

    [续《通过实例模拟ASP.NET MVC的Model绑定机制:简单类型+复杂类型]》]基于数组和集合类型的Model绑定机制比较类似,对于绑定参数类型或者参数类型的某个属性为数组或者集合,如果ValueProvider...此外,针对数组/集合的Model绑定还支持基于索引的方式。[源代码从这里下载][本文已经同步到《How ASP.NET MVC Works?》...绑定逻辑很简单,我们直接通过ValueProvider将通过指定前缀得到的数据值转换为IEnumerable类型,并进一步添加到一个List对象中,最终我们将该List对象的元素拷贝到一个创建的数组对象并将其作为...如下的代码片断所示,我们在用于进行数组绑定的BindArrayModel方法中添加了额外的代码用于提取索引值(整型和字符串类型)列表,并且根据这行索引值生成相应的前缀和对应的Key通过ValueProvider...ASP.NET MVC的Model绑定的机制:简单类型+复杂类型 通过实例模拟ASP.NET MVC的Model绑定的机制:数组 通过实例模拟ASP.NET MVC的Model绑定的机制:集合+字典

    3.7K90

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

    在本系列的前面两篇文章(《简单类型+复杂类型》、《数组》)我们通过创建的实例程序模拟了ASP.NET MVC默认使用的DefaultModelBinder对简单类型、复杂类型以及数组对象的Model绑定...现在我们按照相同的方式来分析基于集合和字典类型的Model绑定是如何实现的。[源代码从这里下载][本文已经同步到《How ASP.NET MVC Works?》...通过GetValueProvider提供的NameValueCollectionValueProvider采用基零整数索引的方式定义数据项。...default(TValue)); 18: dictionary[key] = local2; 19: } 20: } 21: } 我们照例通过我们创建的实例程序来验证自定义的...ASP.NET MVC的Model绑定的机制:简单类型+复杂类型 通过实例模拟ASP.NET MVC的Model绑定的机制:数组 通过实例模拟ASP.NET MVC的Model绑定的机制:集合+字典

    2.1K70

    ASP.NET MVC学习笔记06编辑方法和编辑视图

    上一篇中,说到了MVC生成的Index方法,和Details方法,现在来说一下自动生成的方法和视图,应该怎么的来进行编辑。...ASP.NET MVC model binder接收form所post的数据,并转换所接收的 Movie请求数据从而创建一个Movie对象。...如果禁用 JavaScript,则不会有客户端验证,但服务器将检测回传的值是无效的,而且将重新显示 表单中的值与错误消息。在本教程的后面,我们验证更详细的审查。...下面,通过一些列的修改,来让用户可以通过流派来搜索电影。先从Controller中的index方法开始。 ? 这个版本的 Index方法将接受一个附加的 movieGenre参数。...在本篇中,创建了一个搜索的方法和视图,使用它,用户可以通过电影标题和流派来搜 索。

    7.1K50

    asp.net dropdownlist的值怎么设置_ASPNET程序开发招聘

    大家好,又见面了,我是你们的朋友全栈君。 我刚刚开始学习ASP.NET,所以当然有点辛苦,懂的不是很多… 今天写程序时碰到了控件 DrowDownList.–列表控件…....当我改变控件的值时,怎么也不能改变另一个DropDownList控件的值,查了MSDN之后才知道--原来我的 AutoPostBack属性没有设置成”true” 所以不能刷新,但是当我改完之后确实能够刷新了...,但是每次刷新之后并不能改变需要触发事件的那个控件的值; 上网查了一些 先总结如下: 1.事件触发之前都会执行 Page_Load事件--我的初始化全部放在上述事件中,因此不能改变 2.修改方法:...IsPostBack)之后就能实现你所要求的功能了………………… 见笑了.. 文笔不怎么样… 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    1.6K40

    Razor模板引擎

    Razor有VS自动提示,而且有助于学习asp.net mvc。(Nvelocity、Vtemplate自行学习) Nvelocity。Vemplate 语法在C#中没有自动提示。...但是用着非常方便的 2.借助于开源的RazorEngine,我们可以在非asp.net mvc项目中使用Razor引擎,甚至在控制台、WinForm项目中都可以使用Razor(自己开发代码生成器)...(需要重新打开,才有智能提示) 4.Razor中@后面跟表达式表示在这个位置输出表达式的值,模板中Model为传递给模板的对象。....@{}中为C#代码,C#代码还可以和html代码混排 6.由于不是在MVC项目中,所以无法使用@Html.DropDownList、@Url.Encode()等。...RazorEngine(c#语言写的)是微软做的一个开源的模板引擎,不是简单的在asp.net MVC中用,其他地方也是可以使用的。 自己写个cshtml 步骤: 1。

    3.8K30

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

    [源代码从这里下载][本文已经同步到《How ASP.NET MVC Works?》...为了验证我们自定义的DefaultModelBinder能够真正地用于针对简单参数类型的Model绑定没我们将它应用到一个具体的ASP.NET MVC应用中。...在通过Visual Studio的ASP.NET MVC项目模板创建的空Web应用中,我们创建了如下一个默认的HomeController。...{属性名称}”(如果当前前缀为空,则直接采用属性名称)作为绑定对应属性的前缀递归地调用BindModel方法得到属性值。我们最终通过反射的方式将得到值对属性进行赋值。...ASP.NET MVC的Model绑定的机制:简单类型+复杂类型 通过实例模拟ASP.NET MVC的Model绑定的机制:数组 通过实例模拟ASP.NET MVC的Model绑定的机制:集合+字典

    2.2K80
    领券