废话不说直接上代码

// 首先实现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的更多相关文章

  1. C# Autofac集成之Framework WebAPI

    Web API 2集成需要Autofac.WebApi2 NuGet包. Web API集成需要Autofac.WebApi NuGet包. Web API集成为控制器,模型绑定器和操作过滤器提供了依 ...

  2. SignalR集成Autofac

    SignalR SignalR集成需要 Autofac.SignalR NuGet 包. SignalR 集成提供SignalR 集线器的依赖集成.由于 SignalR 是内部构件,所以不支持Sign ...

  3. 【译】Dependency Injection with Autofac

    先说下为什么翻译这篇文章,既定的方向是架构,然后为了学习架构就去学习一些架构模式.设计思想. 突然有一天发现依赖注入这种技能.为了使得架构可测试.易维护.可扩展,需要架构设计为松耦合类型,简单的说也就 ...

  4. NopCommerce使用Autofac实现依赖注入

    NopCommerce的依赖注入是用的AutoFac组件,这个组件在nuget可以获取,而IOC反转控制常见的实现手段之一就是DI依赖注入,而依赖注入的方式通常有:接口注入.Setter注入和构造函数 ...

  5. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](九)

    前言 童鞋们,大家好 我是专注.NET开发者社区建设的实践者Rector. 首先,为自己间隔了两个星期五再更新本系列文章找个不充分的理由:Rector最近工作,家庭的各种事务所致,希望大家谅解. 本文 ...

  6. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](十)

    前言 朋友们, 大家好,我还是Rector,写ASP.NET MVC 5系列文章[一步一步创建ASP.NET MVC5程序Repository+Autofac+Automapper+SqlSugar] ...

  7. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](十一)

    前言 小伙伴们, 大家好,我是Rector. 最近Rector忙于换工作,没有太多时间来更新我们的ASP.NET MVC 5系列文章 [一步一步创建ASP.NET MVC5程序Repository+A ...

  8. AutoFac简介

    在.NET上现在存在许多的依赖注入容器, 如:Castle Windsor.StructureMap.Autofac .Unity. 这里主要介绍一下Autofac,Autofac和其他容器的不同之处 ...

  9. 关于.NET中的控制反转(三)- 依赖注入之 Autofac

    一.Autofac简介 Autofac和其他容器的不同之处是它和C#语言的结合非常紧密,在使用过程中对你的应用的侵入性几乎为零,更容易与第三方的组件集成.Autofac的主要特性如下: 组件侵入性为零 ...

随机推荐

  1. Entity Framework应用:使用Code First模式管理视图

    一.什么是视图 视图在RDBMS(关系型数据库管理系统)中扮演了一个重要的角色,它是将多个表的数据联结成一种看起来像是一张表的结构,但是没有提供持久化.因此,可以将视图看成是一个原生表数据顶层的一个抽 ...

  2. dubbo注册中心zookeeper出现异常 Opening socket connection to server 10.70.42.99/10.70.42.99:2181. Will not attempt to authenticate using SASL (无法定位登录配置)

    linux下,zookeeper安装并启动起来了 DEMO时,JAVA控制台出现: INFO 2014-03-06 09:48:41,276 (ClientCnxn.java:966) - Openi ...

  3. java web中读取properties文件时的路径问题

    在web开发时,难免会有一些固定的参数,我们一般把这些固定的参数存在properties文件中,然后用的时候要读出来.但经常出现一些错误,找不到相应的路径,所以,今天特地讲一些如何正确获得路径. 首先 ...

  4. Spring中 classpath* 和 classpath 前缀的区别

    // org.springframework.core.io.support.ResourcePatternResolver /** * Pseudo URL prefix for all match ...

  5. e682. 获得打印页的尺寸

    Note that (0, 0) of the Graphics object is at the top-left of the actual page, which is outside the ...

  6. e663. 在gif图像中获取透明和色彩的数量

    A IndexColorModel is used to represent the color table of a GIF image. // Get GIF image Image image ...

  7. 【Java面试题】10 abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?

    1.abstract是抽象的,指的是方法只有声明而没有实现,他的实现要放入声明该类的子类中实现. 2.static是静态的,是一种属于类而不属于对象的方法或者属性 3.synchronized 是同步 ...

  8. 学习 TList 类的实现[3] - 不能回避的话题: 内存分配

    在 Delphi 中, 几乎所有的类型都有对应的指针类型, 譬如: Char PChar Word PWORD Double PDouble TPoint PPoint 甚至一种类型对应这着几种指针类 ...

  9. 动态生成的DOM不会触发onclick事件的原因及解决方法

    最近朋友在做一个项目的时候,遇到动态加载微博内容,然后点击“展开评论”后获取该微博的所有评论.这里使用了动态加载的<span mid='123456789′ class='get_comment ...

  10. Unity文件操作路径

    Unity3D中的资源路径: Application.dataPath:此属性用于返回程序的数据文件所在文件夹的路径.例如在Editor中就是Assets了. Application.streamin ...