在验证摘要上动态显示引导程序周围的错误 div?



我有一个使用Razor视图引擎的ASP.NET MVC 4.5。我还添加了Bootstrap。

我的疑问是:如何根据@Html.ValidationSummary()动态显示或隐藏div?-优选没有JQuery。

在我的具体案例中,有一个表单包含几个输入。每当出现验证错误(例如,空字段)时,我打算在单个div.中显示相关的错误消息

<div class="alert alert-danger">
@Html.ValidationSummary();
</div>

提前谢谢。

这一切都内置在MVC中,没有任何黑客攻击的理由。

简单使用:

@Html.ValidationSummary(false, "", new { @class = "alert alert-danger" })

在没有错误的情况下,分配一些CSS来隐藏它:

.validation-summary-valid.alert-danger {
    display: none;
}

更容易,更干净。

我会使用一个html助手,你可以这样调用它:

         @Html.BootStrapValidationSummary();

这是代码:

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());
     }

}

这是一种更快的方法,但感觉像是黑客攻击(我个人讨厌在视图中使用if语句):

 @{
    var anyErrors = ViewData.ModelState.Values.Where( v => v.Errors.Count != 0 ).Any();
 }
@if (anyErrors) {
 <div class="alert alert-danger">
  @Html.ValidationSummary();
</div>
}

最新更新