asp.net-mvc – 使用数据注释进行自定义验证
我正在使用数据注释来检查正在输入的数据,但是当涉及更多自定义方式来验证数据时,我陷入了困境.
我需要对数据库运行查询以查看是否存在存在的东西,然后在出现“自定义数据库检查错误”时向用户报告,例如“公司名称已存在” 我如何与dataannotations一起实现这样的东西? 我使用linq和3.5sp1附带的实体框架完成了所有查询 / M 解决方法
扩展数据注释的自定义属性
您必须编写自己的属性,以对数据存储进行对象实例的验证. 确保您的类继承System.ComponentModel.DataAnnotations.ValidationAttribute类: public class MustNotExist: ValidationAttribute { ... } 警告 当我需要验证对象在数据存储中是唯一的时候,我遇到了类似的情况.但是这种验证在实体类本身是不可能的,因为它应该只适用于那些正在创建的实体,但是当你从数据存储中返回实体时却不行. 我的解决方案是拥有一个单独的接口,类和属性. public interface IExternalValidator ... class DBUniqueValidator: IExternalValidator ... class ValidateExternallyAttribute: FilterAttribute,IActionFilter { ... public ValidateExternallyAttribute(Type validatorType,Type entityType) ... ... } 我能够将我的属性放在获取实体参数的控制器动作上.过滤器操作属性然后检查控制器操作参数(它可以轻松访问其类型和值)并针对正确的参数(在属性定义中提供的类型)运行外部验证器,并在验证失败时填充ModelState错误. [ValidateExternally(typeof(DBUniqueValidator),typeof(User))] public ActionResult RegisterUser(User newUser) { if (!this.ModelState.IsValid) { // act accordingly - probably return some error depending on model state errors } // register new user in data store } 这样我就可以仅对那些实际需要它的动作运行外部验证,这种技术也帮助我的控制器动作代码保持干净和简短.我所要做的就是检查是否存在任何模型状态错误. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – MVC3自定义格式化日期的不显眼日期验证
- asp.net – 当我尝试从数据库中删除一行时,我收到了太多的参
- asp.net-mvc – 上传图片 – 安全
- 【Asp.Net MVC+EF+三层架构】详解(二)MVC学习
- asp.net-mvc-2 – ASP.NET MVC2 Ninject NLog(shared hosti
- asp.net – Response.Redirect导致IsPostBack为true
- 如何阻止asp.net上传发布的文件
- 如何设置特定于ASP.NET请求的log4net上下文属性?
- ValidateInput属性似乎无法在ASP.NET MVC中工作
- ASP.NET和会话 – 新的浏览器实例与新的浏览器窗口
- asp.net-mvc – ActionFilterAttributes是否跨线
- asp.net-mvc – ASP.NET MVC视图或URL应该有多少
- 初识ABP vNext(1):开篇计划&基础知识
- ASP.NET会话状态在异常后丢失
- asp.net-mvc – 将部分视图渲染为字符串MVC4
- asp.net-mvc – 带有ioc的asp.net mvc – >使用B
- 如何使用ASP.NET Repeater删除尾随逗号?
- ASP.NET Core 3.0 使用gRPC
- asp.net-mvc – MVC Razor HTML助手语法:Viewba
- asp.net-mvc-2 – 使用或不使用AutoMapper的“合