千家信息网

ASP.NET MVC5验证之Fluent Validation的示例分析

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章将为大家详细讲解有关ASP.NET MVC5验证之Fluent Validation的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Fluent V
千家信息网最后更新 2026年10月31日ASP.NET MVC5验证之Fluent Validation的示例分析

这篇文章将为大家详细讲解有关ASP.NET MVC5验证之Fluent Validation的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Fluent Validation是一个开源的.NET类库,它使用Fluent接口和lambda表达式,来为实体做验证。Fluent Validation是专门为实体做验证使用的。它的优点是:把验证逻辑和你代码的业务逻辑分别开了。这就是AOP的思想。就是横切关注点。你只需要关注某一个模块。这样就保证了代码的纯洁度。

Fluent Validation开源地址:https://github.com/JeremySkinner/fluentvalidation

例句:
Aspect-oriented program is a new software development paradigm that enables modular implementation of cross-cutting concerns,and poses difficulties for slicing of aspect-oriented programs.
面向方面程序设计作为一种新的软件开发范型,能够实现横切关注点的模块化,其特有的语言元素和功能为切片增加了难度。
好了,废话太多,直接进入正题,
首先我们新建一个空白的MVC项目:在Model文件夹下新建一个类Customer:

using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace Server_Side_Validation_IN_MVC.Models{ public class Customer {  public string Name { get; set; }  public string Email { get; set; } }}

然后新建一个文件夹Validator,在里面添加一个类CustomerValidator

既然是要使用Fluent Validation,那么就是要引用它的类库了。

CustomerValidator类中,继承AbstractValidator抽象类,(PS:这里和EF中的Fluent API类似,EF中是继承EntityTypeConfiguration类)

using FluentValidation;using Server_Side_Validation_IN_MVC.Models;using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace Server_Side_Validation_IN_MVC.Validator{ public class CustomerValidator:AbstractValidator {  public CustomerValidator()  {   RuleFor(s => s.Name).NotEmpty().WithMessage("名字不能为空");   RuleFor(s => s.Email).NotEmpty().WithMessage("电子邮件不能为空");   RuleFor(s => s.Email).EmailAddress().WithMessage("电子邮件格式不合法");  } }}

控制器中的代码:

using FluentValidation.Results;using Server_Side_Validation_IN_MVC.Models;using Server_Side_Validation_IN_MVC.Validator;using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;namespace Server_Side_Validation_IN_MVC.Controllers{ public class CustomerController : Controller {  // GET: Customer  public ActionResult Index()  {   return View();  }  [HttpPost]  public ActionResult Index(Customer model)  {   CustomerValidator validator = new CustomerValidator();   ValidationResult result = validator.Validate(model);   if (result.IsValid)   {    ViewBag.Name = model.Name;    ViewBag.Email = model.Email;   }   else   {    foreach (var item in result.Errors)    {     ModelState.AddModelError(item.PropertyName, item.ErrorMessage);    }   }   return View(model);  } }}

修改一下,默认的路由:

public static void RegisterRoutes(RouteCollection routes)  {   routes.IgnoreRoute("{resource}.axd/{*pathInfo}");   routes.MapRoute(    name: "Default",    url: "{controller}/{action}/{id}",    defaults: new { controller = "Customer", action = "Index", id = UrlParameter.Optional }   );  }

什么都不输入,直接点击Create:

输入Name,不输入Email

输入Name,Email输入非法的数据

输入合法的数据:

这里就完成了Fluent Validation验证。大家可以看到,这样的验证是不是干净简洁多了,配置信息都在一个类中,方便维护和扩展。不想数据注解那样,把验证信息和实体混合了。

关于"ASP.NET MVC5验证之Fluent Validation的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

验证 输入 代码 实体 就是 数据 篇文章 示例 分析 信息 关注点 文件 文件夹 更多 模块 电子 电子邮件 逻辑 邮件 不错 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技卖菜 杭州互联网科技公司 百单互联网科技有限公司 有木互联网科技 深圳天众互联网科技公司 万达互联网科技 互联网科技大会 一五八零互联网科技 美国互联网前沿科技 欧洲十大科技互联网公司 苏州铭阳互联网科技有限公司 本届互联网博览会上的黑科技 沐思想互联网科技有限公司 广州燕处互联网科技有限公司 山东大美朱楼互联网科技有限公司 艺电能源互联网科技有限公司招聘 互联网领先科技活动 科技互联网经济论坛 盐城市攀科互联网科技有限公司 青岛互联网科技园 小米移动互联网科技园 金融科技创新监管互联网金融 互联网科技视频 融势互联网科技 互联网科技商业 电子科技大学互联网创业大赛 洛阳共同富裕互联网科技有限公司 容联科技互联网电商 互联网金融运营模式中的金融科技 武汉亿视互联网科技有限公司
0