Gui*_*ari 7 asp.net asp.net-mvc html-helper asp.net-mvc-4 twitter-bootstrap
我有一个使用Razor View Engine的ASP .NET MVC 4.5.我还添加了Bootstrap.
我的疑问是:如何根据@ Html.ValidationSummary()动态显示或隐藏div? - 最好没有JQuery.
在我的具体情况中,有一个包含几个输入的表单.每当验证错误发生时(例如,空字段),我打算在单个div中显示相关的错误消息.
<div class="alert alert-danger">
@Html.ValidationSummary();
</div>
Run Code Online (Sandbox Code Playgroud)
提前致谢.
she*_*nku 23
这些都是MVC内置的,没有任何理由可以进行任何黑客攻击.
只需使用:
@Html.ValidationSummary(false, "", new { @class = "alert alert-danger" })
Run Code Online (Sandbox Code Playgroud)
在没有错误的情况下,有些CSS可以隐藏它:
.validation-summary-valid.alert-danger {
display: none;
}
Run Code Online (Sandbox Code Playgroud)
更简单,更清洁.
我会使用一个 html 助手,你可以这样调用:
@Html.BootStrapValidationSummary();
Run Code Online (Sandbox Code Playgroud)
这是代码:
public static MvcHtmlString BootStrapValidationSummary(this HtmlHelper htmlHelper)
{
var sb = new StringBuilder();
var anyErrors = ViewData.ModelState.Values.Where( v => v.Errors.Count != 0 ).Any();
var divBeginTag = @"<div class=""alert alert-danger"">";
var divEndTag = @"</div>";
if (anyErrors) {
sb.AppendLine(divBeginTag);
sb.AppendLine(htmlHelper.ValidationSummary());
sb.AppendLine(divEndTag);
return new MvcHtmlString(sb.ToString());
}
else
{
return new MvcHtmlString(sb.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
这是一种更快的方法,但感觉像是一种 hack(我个人讨厌在视图中使用 if 语句):
@{
var anyErrors = ViewData.ModelState.Values.Where( v => v.Errors.Count != 0 ).Any();
}
@if (anyErrors) {
<div class="alert alert-danger">
@Html.ValidationSummary();
</div>
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8583 次 |
| 最近记录: |