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 – MVC – Asp.Net Identity. HOWTO在用户登录
- 在HiddenField asp.net中存储一个字符串数组
- asp.net-mvc-3 – 从IIS7中的虚拟目录运行ASP.NET MVC应用程
- asp.net-mvc – 如何绘制密码字段就像我们绘制Ember.TextFi
- 您可以为标准ASP.NET Web窗体验证器定制客户端JavaScript验
- asp.net-mvc – Mvc Mini Profiler请求带有和不带有RouteBa
- asp.net-mvc-4 – Web API HTTP请求命名约定
- asp.net – Jquery并触发一个隐藏按钮的单击
- asp.net – 使用ItemType进行强类型转发器控制?
- 单元在ASP.NET中测试登录
- asp.net-mvc – MVC 4捕获所有路由从未到达
- asp.net – Microsoft JScript运行时错误:’Sys
- asp.net – SQL Server未找到或无法访问
- WebApi ASP.NET身份Facebook登录
- asp.net – 当你不能使用ViewState时你会怎么做?
- asp.net – 我找不到在visual studio 2010中从工
- asp.net-mvc – 基于Route Params的ASP.NET MVC授
- asp.net-mvc – 如何在ASP.NET MVC应用程序中使用
- wcf – SOAP API HTTPS – 与经典ASP连接
- Asp.NetCore1.1版本去掉project.json后如何打包生
