千家信息网

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

发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章将为大家详细讲解有关ASP.NET MVC5验证之Fluent Validation的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Fluent V
千家信息网最后更新 2025年02月23日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安全错误 数据库的锁怎样保障安全 扬州服务器工控机定制 安卓应用软件开发方向是干什么的 开一家软件开发公司成本 网络安全主持人致词 网络安全管理师考试难不难 uuid 数据库性能 上海网络安全教育活动 web服务器的安全方案 2台笔记本如何传输数据库 西安数据库审计产品价格 每年的互联网网络安全比赛叫啥 顺丰服务器在哪 济宁戴尔服务器代理哪里有 浙江net软件开发需要多少钱 杭州应用软件开发代码 揭阳通讯软件开发批发价格 m1 mac 软件开发 授权dns服务器 济南创咖网络技术有限公司 新华三校招笔试题软件开发 网络技术基础ppt免费下载 计算机网络技术可以报考监理员吗 控制网络技术的工作内容 数据库70年代 网络安全个人标签 每年的互联网网络安全比赛叫啥 网络安全等级保护制度的认识 网络安全在校园 手抄报方案 学校网络安全生产月系列 湖北好的软件开发市场
0