将类添加到ValidationSummary

时间:2016-09-22 04:59:21

标签: javascript c# jquery css asp.net-mvc

显然,unobtrusive jsModelState错误无法一起发挥。我想要完成的是两件事。当发生ModelState或客户端错误时,它将由validation-summary-errors类显示。

我遇到的问题是,而不是使用助手,

<div class="validation-summary-errors" data-valmsg-summary="true">
    <ul style="list-style-type:none;"></ul>
</div>

它不会显示ModelState错误,因此我尝试使用以下代码

代码:

if (!ViewData.ModelState.IsValid)
{
   <div class="validation-summary-errors" data-valmsg-summary="true">
       <ul style="list-style-type:none;"></ul>
   </div>
}
else
{
   @Html.ValidationSummary()
}

但是由于帮助器,我无法格式化输出(就像从列表中删除子弹一样)!

以下是javascript:

 $(document).ready(function () {
     $('form').each(function () {
         var theForm = $(this);
         theForm.submit(function () {
             if ($(this).valid()) {
                 if ($(this).find('.validation-summary-valid').length) {
                     $('.validation-summary-errors').hide();
                 }
             } else {
                 if ($(this).find('.validation-summary-errors').length) {
                     $('.validation-summary-errors')
                         .addClass('alert alert-danger');
                 }
             }
         });
     });
 });

3 个答案:

答案 0 :(得分:2)

使用此

@Html.ValidationSummary(true, "", new { @class = "validation-summary-errors" })

答案 1 :(得分:0)

不引人注目的模特状态确实可以很好地发挥作用。

您在验证失败时对视图进行了硬编码以显示空列表,并且在验证成功时仅使用Razor帮助程序,因此它将始终显示空列表。

只使用@Html.ValidationSummary()而不使用if块。如果模型有效,它将自动为空。

如果您预期没有显示模型验证消息,请在if (ModelState.IsValid)上的控制器中设置断点并检查模型。然后检查您的数据注释。出于调试目的,您可以手动添加模型状态错误ModelSatate.AddModelError("fieldname", "This field has an error");,以证明Razor帮助程序正在运行。

答案 2 :(得分:0)

感谢您的投入。 我最终删除了ValidationSummary()的if语句。为了处理我最终做的事情,添加类似于上面显示的第二个小脚本,但是对于window.onload事件。通过这种方式,它可以捕获ModelState错误,而上面的错误可以处理突兀。