asp.net-mvc-3 – 如何在.NET MVC3中注入用于验证的依赖关系?
|
我们有很多验证方法需要访问存储库/数据库来完成工作.到目前为止,我们一直使用服务定位器模式(尽管谨慎)在自定义ValidationAttributes中实现: public override bool IsValid(object value)
{
// use custom service locator in our app's infrastructure
var repos = DependencyInjector.Current.GetService<IXyzRepository>();
...
}
我知道这是(作为一个反模式,我们想使用一个更正确的方法,我们使用统一,我读了this post that says to use a build-up method.但是the link in the accepted answer说文档已经过时了(退休内容). 该解决方案不需要使用验证属性,我想它可以使用IValidatableObject,但是问题依然存在:如何将依赖项注入到模型中.我们需要一个自定义模型binder来做到这一点吗? 另一个解决方案是在控制器中执行验证,其中依赖注入很容易.对我来说,这感觉很混乱.我想让模型在到达action方法的时候被验证. 另外我们有时候使用[RemoteAttribute]在客户端上执行这些验证.目前,这些方法通过使用静态Validator.TryValidateObject方法构建视图模型并将验证委托给模型. 您如何完成验证,需要注入的依赖关系来完成其工作,而不使用SL反模式? 解决方法
我使用FluentValidation.NET在我的应用程序中执行验证.它允许我将inject dependencies加入我的验证器.它有一个非常好的integration with ASP.NET MVC.它还支持自动客户端验证的标准规则,就像数据注释使用jquery unobtrusive验证一样: > NotNull / NotEmpty 我从来没有使用数据注释来执行验证.当您需要处理一些更复杂的验证场景,您需要验证依赖属性甚至使用某些服务时,它们绝对没有用.我在前一句话中用斜体字复杂,因为我认为validating that one of the 2 properties是不是必须的,是一个非常复杂的验证场景,但是,只需检查您必须编写的基础设施垃圾数量,才能使用数据注释实现.看这个代码,你不再知道你正在验证什么. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-core – 如何在使用asp.net 5时更改登录URL
- asp.net-mvc – 如何在ASP.Net MVC中对自定义ActionFilter进
- 如何关闭ASP.NET必需的字段验证器“丢失焦点”行为
- asp.net-mvc – Azure下载blob文件流/ memorystream
- asp.net-mvc – 如何从MVC控制器返回Json对象到视图
- .net中基于资源的授权
- asp.net-mvc – 如何在ASP.NET MVC RC1中返回304状态与File
- asp.net-mvc – 使用没有ORM的ASP.NET MVC
- asp.net – 超过了JavaScriptSerializer.MaxJsonLength.处理
- asp.net-web-api – WebApi 2.1 PUT抛出错误415
- asp.net-mvc – 如何在编辑器模板中获取序列/数组
- asp.net – 如何使用GridView和ObjectDataSource
- ASP.NET MVC URL在CSS文件中自动解析
- asp.net-mvc – Server 2008 R2上的MVC – 如何?
- asp.net-mvc – 值不能为空或为空.参数名称:con
- .net-4.0 – 为什么有潜在危险的请求错误甚至Val
- ASP.Net 4中ClientIDMode的正确设置是什么,以获得
- asp.net-mvc-3 – Glimpse.axd 403ing在IIS上
- vbscript – 服务器端注释:ASP Classic中相当于
- asp.net 大文件上传 之 改版了的SlickUpload.Htt
