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
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<Customer> {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: Customerpublic 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验证。大家可以看到,这样的验证是不是干净简洁多了,配置信息都在一个类中,方便维护和扩展。不想数据注解那样,把验证信息和实体混合了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。