如何使用Fluent validation向视图发送验证错误消息



目前正在为我的项目添加验证,我遇到了Fluent Validation,我创建了我的验证器,如下所示:

using Dealership.App.Models.CarBrand;
using FluentValidation;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Dealership.App.FluentValidation
{
public class CarBrandValidator : AbstractValidator<CreateCarBrandViewModel>
{
public CarBrandValidator()
{
RuleFor(brand => brand.CarBrandName).NotNull()
.WithMessage("Car Brand needs to have a name");
}
}
}

按照文档的建议,我在启动文件中这样配置它:

services.AddMvc()
.AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining<Startup>());

现在这是我在控制器中应用验证的动作方法

public async Task<IActionResult> CreatePost(CreateCarBrandViewModel newBrand) 
{
if(ModelState.IsValid)
{
var response = await _mediator.Send(new CreateCarBrandCommand(newBrand));
if (response)
{
this._unitOfWork.Commit();
}
return RedirectToAction("Index");
}
return RedirectToAction("Create");
}

这是我的视图:

@model Dealership.App.Models.CarBrand.CreateCarBrandViewModel
<div asp-validation-summary="ModelOnly"></div>
<form asp-action="CreatePost" method="POST">
<div class="form-group">
<label for="BrandName">Brand Name</label>
<input asp-for="CarBrandName" class="form-control col-4" id="BrandName" placeholder="Enter Car Brand name" />
<span asp-validation-for="CarBrandName"></span>
</div>
<button type="submit" class="btn btn-primary">Create</button>
</form>

事情是这样的,我的验证工作50%,我的意思是,如果验证器中指定的字段为空,则验证工作在方面,它将再次重定向回同一页面,这一切都很好。但是我想显示我在验证器中设置的错误信息,我已经尝试了很多东西,读了很多东西,如果有人能帮助我,那将是惊人的

Thanks in advance

嗯,我找到了答案,这是一个简单的RedirecToAction,因为当验证失败时,我需要回到创建视图。一开始我有return RedirectToAction({view-name}),我需要做return View({view-name}).

最新更新