gpt4 book ai didi

asp.net - 对所有无效属性使用单个错误消息模板

转载 作者:行者123 更新时间:2023-12-03 19:41:15 26 4
gpt4 key购买 nike

想象一个 razor pageForm有许多用户填写的输入。
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";
}
enter image description here

最佳答案

我创建了一个带有 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com