想象一个 razor page
与 Form
有许多用户填写的输入。
与 post
当它想像这样验证发布的模型时的方法:
public IActionResult OnPost()
{
if (!ModelState.IsValid)
{
return Page(model);
}
}
例如,如果该模型的 3 个属性(名称为:a、b、c)无效,它将返回到 razor View 并显示错误(因为每个属性的 asp-validation-for
),如下所示:The a field is required.
The b field is not a valid e-mail address.
The c field is required.
我想为所有人显示一个特定的错误,如下所示:This Input is not valid.
This Input is not valid.
This Input is not valid.
我知道我可以使用 (ErrorMessage ="")
分别为他们每个人,但它的大尺寸不合逻辑!有没有办法为所有无效 ModelStates
显示特定的按摩? ?编辑:
例如,在 View 中显示错误之前,请像这样更改它们的错误消息:
@foreach (var error in modelStateErrors)
{
error.text = "Fill it";
}
最佳答案
我创建了一个带有 ModelState 扩展方法的解决方案。
它基本上从状态中删除任何错误,并将它们添加回所需的消息。
创建一个 ModelStateExtensions.cs
在您的命名空间中:
public static class ModelStateExtensions
{
public static void SetAllErrorMessages(this ModelStateDictionary modelState, string errorMessage)
{
foreach (var state in modelState)
{
if (state.Value.Errors.Count > 0)
{
modelState.Remove(state.Key);
modelState.AddModelError(state.Key, errorMessage);
}
}
}
}
然后,如果您的 ModelState 无效,您可以在返回页面之前转换消息:public IActionResult OnPost()
{
if (!ModelState.IsValid)
{
ModelState.SetAllErrorMessages("Your message here");
return Page(model);
}
}
关于asp.net - 对所有无效属性使用单个错误消息模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64314425/