fluentValidation集成到autofac
废话不说直接上代码
// 首先实现ValidatorFactory public class DependencyResolverValidatorFactory : ValidatorFactoryBase
{
public override IValidator CreateInstance(Type validatorType)
{
return DependencyResolver.Current.GetService(validatorType) as IValidator;
}
}
//配置FluentValidation
public class FluentValidationConfig
{
public static void ConfigureContainer()
{
var factory = new DependencyResolverValidatorFactory();
ModelValidatorProviders.Providers
.Add(new FluentValidationModelValidatorProvider(factory));
DataAnnotationsModelValidatorProvider
.AddImplicitRequiredAttributeForValueTypes = false;
ValidatorOptions.ResourceProviderType = typeof(ValidationResources);
ValidatorOptions.CascadeMode = CascadeMode.StopOnFirstFailure;
}
}
//在autofac中注册继承自AbstractValidator的验证类 AssemblyScanner
.FindValidatorsInAssemblyContaining<AddressValidator>()
.ForEach(x => builder.RegisterType(x.ValidatorType).As(x.InterfaceType).SingleInstance()); //该类所在程序集内的所有继承自AbstractValidator的验证类都会被注册到autofac容器内
public class AddressValidator : AbstractValidator<Address>
{
public AddressValidator ()
{
RuleFor(x => x.Name).NotEmpty().WithLocalizedName(()=>"收件人");
RuleFor(x => x.Email).NotEmpty().EmailAddress();
RuleFor(x => x.Mobile).NotEmpty().Mobile();
}
}
fluentValidation集成到autofac的好处
//如果fluentValidation不使用autofac容器,那么需要在每个asp.net mv action中调用
Address address = new Address();
AddressValidator validator = new AddressValidator();
ValidationResult results = validator.Validate(address); //或者 [Validator(typeof(AddressValidator))]//此行是重点
public class Address
{
public string Name { get; set; }
public string Mobile { get; set; }
public string Email { get; set; }
public string Details { get; set; }
}
//用了autofac 上面两种都不需要,在action像没有用到fluentvalidation那样直接:
if (!ModelState.IsValid)
{
return View(model);
}
fluentValidation集成到autofac的更多相关文章
- C# Autofac集成之Framework WebAPI
Web API 2集成需要Autofac.WebApi2 NuGet包. Web API集成需要Autofac.WebApi NuGet包. Web API集成为控制器,模型绑定器和操作过滤器提供了依 ...
- SignalR集成Autofac
SignalR SignalR集成需要 Autofac.SignalR NuGet 包. SignalR 集成提供SignalR 集线器的依赖集成.由于 SignalR 是内部构件,所以不支持Sign ...
- 【译】Dependency Injection with Autofac
先说下为什么翻译这篇文章,既定的方向是架构,然后为了学习架构就去学习一些架构模式.设计思想. 突然有一天发现依赖注入这种技能.为了使得架构可测试.易维护.可扩展,需要架构设计为松耦合类型,简单的说也就 ...
- NopCommerce使用Autofac实现依赖注入
NopCommerce的依赖注入是用的AutoFac组件,这个组件在nuget可以获取,而IOC反转控制常见的实现手段之一就是DI依赖注入,而依赖注入的方式通常有:接口注入.Setter注入和构造函数 ...
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](九)
前言 童鞋们,大家好 我是专注.NET开发者社区建设的实践者Rector. 首先,为自己间隔了两个星期五再更新本系列文章找个不充分的理由:Rector最近工作,家庭的各种事务所致,希望大家谅解. 本文 ...
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](十)
前言 朋友们, 大家好,我还是Rector,写ASP.NET MVC 5系列文章[一步一步创建ASP.NET MVC5程序Repository+Autofac+Automapper+SqlSugar] ...
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](十一)
前言 小伙伴们, 大家好,我是Rector. 最近Rector忙于换工作,没有太多时间来更新我们的ASP.NET MVC 5系列文章 [一步一步创建ASP.NET MVC5程序Repository+A ...
- AutoFac简介
在.NET上现在存在许多的依赖注入容器, 如:Castle Windsor.StructureMap.Autofac .Unity. 这里主要介绍一下Autofac,Autofac和其他容器的不同之处 ...
- 关于.NET中的控制反转(三)- 依赖注入之 Autofac
一.Autofac简介 Autofac和其他容器的不同之处是它和C#语言的结合非常紧密,在使用过程中对你的应用的侵入性几乎为零,更容易与第三方的组件集成.Autofac的主要特性如下: 组件侵入性为零 ...
随机推荐
- u方法传参
<a href="{:U('Del/mldel',array('id'=>$vo['id']))}">删除</a>
- 【F12】网络面板
使用网络面板了解请求和下载的资源文件并优化网页加载性能 (1)网络面板基础 测量资源加载时间 使用 Network 面板测量您的网站网络性能. Network 面板记录页面上每个网络操作的相关信息,包 ...
- [转] C# mysql 事务回滚
什么是数据库事务 数据库事务是指作为单个逻辑工作单元执行的一系列操作. 设想网上购物的一次交易,其付款过程至少包括以下几步数据库操作: · 更新客户所购商品的库存信息 · 保存客户付款信息--可能包括 ...
- JavaScript 学习笔记(三)
本章学习内容: 1.数组的使用 2.类和对象细节. 3.this关键字的使用 4.构造函数,成员函数的使用 1.数组的使用 在任何的语言中,必须要有的就是数组了,有了数组,使得很多操作都变得非常的 ...
- HDU 1556 Color the ball 树状数组 题解
Problem Description N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的"小飞鸽"牌电动 ...
- 【Java NIO的深入研究1】缓冲区
缓冲区 传统的流和通道的对比 流 通道 慢 快 处理简单 处理复杂 单字节的传输 一块数据的传输 - Java.io.*已经重新写过 - 是对流的模拟 单向的 双向的 可直接访问 必须通过Buffer ...
- IOS 命令行编译
转自:简书 IOS 命令行编译 发表于 IOS2013-08-17 07:07 字数: 583 阅读量: 61 This document will note about the ios comm ...
- 微软ASP.NET网站部署指南(2):部署SQL Server Compact数据库
1. 综述 对于数据库訪问,Contoso University程序要求以下的软件必须随程序一起部署.由于不属于.NET Framework: SQL Server Compact (数据库引擎) A ...
- android SDK manager 快速更新【转】
- nginx配置技巧汇总
https://segmentfault.com/a/1190000000437323