参考:http://www.c-sharpcorner.com/UploadFile/3d39b4/Asp-Net-mvc-validation-using-fluent-validation/
创建一个Customer类
public class Customer { public string Name { get; set; } public string Email { get; set; } }
引用FluentValidation.dll
创建CustomerValidator
public class CustomerValidator : AbstractValidator<Customer> { public CustomerValidator() { RuleFor(x => x.Name).NotEmpty().WithMessage("Name is required"); RuleFor(x => x.Email).NotEmpty().WithMessage("Email is required"); RuleFor(x => x.Email).EmailAddress().WithMessage("Email is not valid"); } }
创建Customer控制器
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 (ValidationFailure failer in result.Errors) { ModelState.AddModelError(failer.PropertyName, failer.ErrorMessage); } } return View(model); } }
View:
@model ValidationAndMVC.Models.Customer @{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layout.cshtml"; } @if (ViewData.ModelState.IsValid) { <b> Name : @ViewBag.Name<br /> Email : @ViewBag.Email </b> } @using (Html.BeginForm()) { <fieldset> <legend>Customer</legend> <div class="editor-label"> @Html.LabelFor(model => model.Name) </div> <div class="editor-field"> @Html.EditorFor(model => model.Name) @Html.ValidationMessageFor(model => model.Name) </div> <div class="editor-label"> @Html.LabelFor(model => model.Email) </div> <div class="editor-field"> @Html.EditorFor(model => model.Email) @Html.ValidationMessageFor(model => model.Email) </div> <p> <input type="submit" value="Create" /> </p> </fieldset> } @section Scripts { @Scripts.Render("~/bundles/jqueryval") } <h2>Index</h2>
效果