说你有一个标准的ValidationSummary:

<%: Html.ValidationSummary(excludePropertyErrors: true) %>

如果所述的ModelState包含模型误差的性质而不是模型本身在ValidationSummary呈现下面的HTML:

<div class="validation-summary-errors"><ul><li style="display:none"></li></ul></div>

这是显示为空列表,但因为周围列表中的红色边框的仍清晰可见。这似乎是我的错误。我可以关闭在ValidationSummary助手将不断呈现一个空列表?

有帮助吗?

解决方案

要USR的回答相似的,我固定这用下面的:

public static IHtmlString FixedValidationSummary(this HtmlHelper htmlHelper)
{
    return htmlHelper.FixedValidationSummary(false);
}

public static IHtmlString FixedValidationSummary(this HtmlHelper htmlHelper,
    bool excludePropertyErrors)
{
    var result = htmlHelper.ValidationSummary(excludePropertyErrors);
    return result == null || result.ToString().Contains("display:none") ? null : result;
}

此方式,我没有实际叉原始

同意,虽然,这是很烦人的。

其他提示

在我发现有通过查看源没有溶液I通过派生代码的MVC版本和修改一行解决了这个问题。

用自举类修复的另一种变化是:

public static class ValidationSummaryExtensions
{
    public static MvcHtmlString CleanValidationSummary(this HtmlHelper htmlHelper, bool excludePropertyErrors, string message = null)
    {
        if(htmlHelper == null) throw new ArgumentNullException("htmlHelper");

        MvcHtmlString validationSummary = null;
        if (htmlHelper.ViewData.ModelState.ContainsKey(string.Empty))
        {
            var htmlAttributes = new { @class = "alert alert-danger" };
            validationSummary = htmlHelper.ValidationSummary(excludePropertyErrors, message, htmlAttributes);
        }

        return validationSummary;
    }
}

另一个解决方法是样式移动到div。这里的CSS:

div.validation-summary-valid {
    display: none;
}

当没有错误的摘要返回不显示格。当有错误的类会自动改变为验证-汇总错误。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top