nim*_*ari 4 asp.net modelstate jquery-form-validator asp.net-core razor-pages
想象一下,一个razor page用Form的是有许多输入,用户填充它们。
post当它想像这样验证发布的模型时使用方法:
public IActionResult OnPost()
{
if (!ModelState.IsValid)
{
return Page(model);
}
}
Run Code Online (Sandbox Code Playgroud)
例如,如果该模型的 3 个属性(名称为:a、b、c)无效,它会返回到 razor 视图并显示错误(因为asp-validation-for每个属性),如下所示:
public IActionResult OnPost()
{
if (!ModelState.IsValid)
{
return Page(model);
}
}
Run Code Online (Sandbox Code Playgroud)
我想为所有人显示一个特定的错误,如下所示:
The a field is required.
The b field is not a valid e-mail address.
The c field is required.
Run Code Online (Sandbox Code Playgroud)
我知道我可以分别(ErrorMessage ="")用于它们中的每一个,但大尺寸不合逻辑!有没有办法为所有无效的人显示特定的按摩ModelStates?
编辑:
例如,在 View 中显示错误之前,请像这样更改它们的错误消息:
@foreach (var error in modelStateErrors)
{
error.text = "Fill it";
}
Run Code Online (Sandbox Code Playgroud)
小智 5
我创建了一个带有 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);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后,如果您的 ModelState 无效,您可以在返回页面之前转换消息:
public IActionResult OnPost()
{
if (!ModelState.IsValid)
{
ModelState.SetAllErrorMessages("Your message here");
return Page(model);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
192 次 |
| 最近记录: |