加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 04:29:42 所属栏目:asp.Net 来源:网络整理
导读:我在MVC中使用ValidationMessage控件.验证每个属性时,可能会显示多个错误消息,但ValidationMessage仅显示列表中的第一条错误消息. 这是一个例子: ModelState["Key"] = new ModelState();ModelState["Key"].Errors.Add("Error 1");ModelState["Key"].Errors.
我在MVC中使用ValidationMessage控件.验证每个属性时,可能会显示多个错误消息,但ValidationMessage仅显示列表中的第一条错误消息.

这是一个例子:

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

在我的HTML中:<%= Html.ValidationMessage(“Key”)%>

显示:“错误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上添加了一个空检查

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读