我正在使用ASP.NET MVC 4
最新版本的Fluent Validation
. 我在数据注释上使用 Fluent Validation。
我正在考虑将验证错误摘要添加到要输入数据的视图中。我目前只使用ValidationMessageFor
每个输入字段。有时我需要在表单验证为真后进行其他验证(例如针对服务),然后在验证失败时将这些消息显示在视图上。而且由于此验证与任何输入字段无关,因此我希望将此错误显示在验证错误摘要中。
让我们以我的员工编号字段为例,它是必需的,并且不能超过 10 个字符。我有以下使用流利验证的验证器类:
public class CreateEmployeeViewModelValidator : AbstractValidator<CreateEmployeeViewModel>
{
public CreateEmployeeViewModelValidator()
{
RuleFor(x => x.EmployeeNumber)
.NotEmpty()
.WithMessage("Required")
.Length(1, 10)
.WithMessage("Must not be greater than 10 characters");
}
}
我的 HTML 标记:
@Html.TextBoxFor(x => x.EmployeeNumber)
@Html.ValidationMessageFor(x => x.EmployeeNumber)
这部分工作正常。如果文本框为空,则在文本框旁边显示“必需”错误消息,如果超过 10 个字符,则显示“不得超过 10 个字符”错误消息。
现在我想将我的验证错误摘要添加到视图中。我添加了以下内容:
@Html.ValidationSummary(true, "Errors have occurred while. Fix the errors before saving.")
我希望它显示一些与上述控件相关的不错的错误消息。尽管如果员工编号为空,它会在员工编号旁边显示“必填”,但我希望它在验证错误摘要中显示“需要员工编号”之类的内容。目前它只显示文本“错误发生时。在保存之前修复错误。”。
当我需要在表单验证为真后进行其他验证时,例如检查员工是否是有效员工,那么我也希望显示此错误消息。如果我在控制器的操作方法中有这个:
ModelState.AddModelError("", "My test error message");
我希望在验证错误摘要中显示“我的测试错误消息”。
这样的事情怎么可能发生?