默认情况下 Html.ValidationSummary() 生成如下 HTML:
<span class="validation-summary-errors">There were some errors...</span>
<ul class="validation-summary-errors">
<li>First Name too long</li>
<li>Invalid Email Address</li>
</ul>
我想选择整个验证摘要并通过 CSS 在其周围添加一个边界框,所以我添加了一个这样的 CSS 类:
.validation-summary-errors{
background-color:#D9FFB2;
border: 1px solid #5CBA30;
color:#000000;
margin-top:15px;
margin-bottom:15px;
}
现在的问题是,这会在验证摘要消息和每个错误消息周围绘制单独的框。当然不是我想的那样。
我可以像这样在摘要周围添加一个 div,但是如果没有验证错误,这将导致一个空的红色框,所以这不是方法:
<div class="my-validation-summary">
<h2>
<%=Model.Message%>
</h2>
<%= Html.ValidationSummary("There were some errors...")%>
</div>
我可以想到几种方法来解决这个问题:
- 使用服务器端标签有条件地添加边界 div
- 通过 jQuery 添加边界 div
- 编写我自己的 HtmlHelper 包装器,打印 CSS 友好的 ValidationSummary
然而,对于解决这样一个简单的任务,所有这些看起来都非常尴尬。必须有更好的方法来做到这一点。也许其他一些编写 CSS 类的方式,所以当没有验证摘要时我不会得到一个空框?
编辑:为了澄清,我这样调用 html 助手:
<%=Html.ValidationSummary("There were some errors...") %>
编辑2:这个问题的范围是看看我是否忽略了一些非常简单和明显的东西。看来我没有,所以我将简单地添加适合我需要的自己的 HtmlHelper 函数。我投票结束我自己的问题。