gpt4 book ai didi

asp.net-mvc - ValidationMessage - 处理同一属性的多个错误

转载 作者:行者123 更新时间:2023-12-01 23:10:32 24 4
gpt4 key购买 nike

我在 MVC 中使用 ValidationMessage 控件。验证每个属性时,可能会显示多个错误消息,但 ValidationMessage 仅显示列表中的第一个错误消息。

这是一个例子:

ModelState["Key"] = new ModelState();
ModelState["Key"].Errors.Add("Error 1");
ModelState["Key"].Errors.Add("Error 2");

在html中我有:<%= Html.ValidationMessage("Key")%>

显示:"Error 1"

我想查看页面上的所有错误消息,即 "Error 1 Error 2"

知道如何做吗?

最佳答案

我遇到了完全相同的问题,因此我为 HtmlHelper 创建了一个扩展方法来替代 MVC ValidationMessage 方法。

与 ValidationSummary 方法相比,此方法的好处是它会显示每个字段的错误消息,因此您可以将其放置在每个字段旁边(与 ValidationMessage 方法相同)。

public static string AllValidationMessage(this HtmlHelper helper, string modelName)
{
StringBuilder builder = new StringBuilder();
TagBuilder ulTag = new TagBuilder("ul");
ulTag.AddCssClass("u-error-list");

builder.Append(ulTag.ToString(TagRenderMode.StartTag));
if (helper.ViewData.ModelState.ContainsKey(modelName) &&
helper.ViewData.ModelState[modelName].Errors.Count > 0)
{
foreach (var err in helper.ViewData.ModelState[modelName].Errors)
{
TagBuilder liTag = new TagBuilder("li") { InnerHtml = HttpUtility.HtmlEncode(err.ErrorMessage) };
liTag.AddCssClass("u-error-item");
builder.Append(liTag.ToString());
}
}
builder.Append(ulTag.ToString(TagRenderMode.EndTag));

var msgSpan = helper.ValidationMessage(modelName, "{placeholder}");

if (msgSpan == null)
return string.Empty;

return msgSpan.ToHtmlString().Replace("{placeholder}", builder.ToString());
}

public static string AllValidationMessageFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression)
{
return HtmlHelperExtensions.AllValidationMessage(helper, ExpressionHelper.GetExpressionText(expression));
}

编辑:添加了 AllValidationMessageFor 方法
编辑:添加了对 msgSpan 的 null 检查

关于asp.net-mvc - ValidationMessage - 处理同一属性的多个错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/956872/

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