ASP.NET MVC的ValidationSummary与excludePropertyErrors =真实呈现空,如果模型无效
-
27-09-2019 - |
题
说你有一个标准的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;
}
当没有错误的摘要返回不显示格。当有错误的类会自动改变为验证-汇总错误。
不隶属于 StackOverflow