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

asp.net-mvc-2 – 在ASP.NET MVC 2中自定义ValidationSummary

发布时间:2020-12-16 06:36:15 所属栏目:asp.Net 来源:网络整理
导读:我想在ASP.NET MVC 2中自定义ValidationSummary的html输出 从 div class="validation-summary-errors" spanOops! validation was failed because:/span ul liThe Title field is required./li liThe Body field is required./li /ul/div 至 div class="valid
我想在ASP.NET MVC 2中自定义ValidationSummary的html输出

<div class="validation-summary-errors">
    <span>Oops! validation was failed because:</span>
    <ul>
        <li>The Title field is required.</li>
        <li>The Body field is required.</li>
    </ul>
</div>

<div class="validation-error">
    <p>Oops! validation was failed because:</p>
    <ul>
        <li>The Title field is required.</li>
        <li>The Body field is required.</li>
    </ul>
</div>

asp.net MVC 2有什么新方法可以解决这个问题吗?

解决方法

似乎没有任何方法可以用模板来做,这很差.如果你看一下这个特定助手方法的代码,你会看到HTML被烘焙到方法本身:

public static string ValidationSummary(this HtmlHelper htmlHelper,string message,IDictionary<string,object> htmlAttributes) {
    // Nothing to do if there aren't any errors
    if (htmlHelper.ViewData.ModelState.IsValid) {
        return null;
    }

    string messageSpan;
    if (!String.IsNullOrEmpty(message)) {
        TagBuilder spanTag = new TagBuilder("span");
        spanTag.MergeAttributes(htmlAttributes);
        spanTag.MergeAttribute("class",HtmlHelper.ValidationSummaryCssClassName);
        spanTag.SetInnerText(message);
        messageSpan = spanTag.ToString(TagRenderMode.Normal) + Environment.NewLine;
    }
    else {
        messageSpan = null;
    }

    StringBuilder htmlSummary = new StringBuilder();
    TagBuilder unorderedList = new TagBuilder("ul");
    unorderedList.MergeAttributes(htmlAttributes);
    unorderedList.MergeAttribute("class",HtmlHelper.ValidationSummaryCssClassName);

    foreach (ModelState modelState in htmlHelper.ViewData.ModelState.Values) {
        foreach (ModelError modelError in modelState.Errors) {
            string errorText = GetUserErrorMessageOrDefault(htmlHelper.ViewContext.HttpContext,modelError,null /* modelState */);
            if (!String.IsNullOrEmpty(errorText)) {
                TagBuilder listItem = new TagBuilder("li");
                listItem.SetInnerText(errorText);
                htmlSummary.AppendLine(listItem.ToString(TagRenderMode.Normal));
            }
        }
    }
}

好消息是,MVC是开源的,你可以从the CodePlex repository获取源代码并以你喜欢的方式调整它.

(编辑:李大同)

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

    推荐文章
      热点阅读