2016-09-22 2 views
-1

По-видимому, ошибки unobtrusive js и ModelState не воспроизводятся вместе. То, что я хочу выполнить, - это 2 вещи. Когда возникает ошибка ModelState или клиентская сторона, она будет отображаться классом валидации-сводки-ошибки.Добавление класса в ValidationSummary

Проблема, которую я имею, что вместо того, чтобы использовать помощника,

<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'); 
       } 
      } 
     }); 
    }); 
}); 
+0

Все, что вам нужно, это '@ Html.ValidationSummary()' и удалить ваш скрипт (предложите перейти на сайт MVC и работать с учебными пособиями, чтобы понять основы валидации - первое предложение в вашем вопросе неверно) –

ответ

0

Удобна и модели состояния играют хорошо вместе.

У вас есть жестко запрограммированное представление, чтобы показать пустой список, когда проверка не удалась, и используйте только помощник Razor, когда проверка прошла успешно, поэтому всегда будет отображаться пустой список.

Просто используйте @Html.ValidationSummary() без блока if. Он будет автоматически пуст, если модель действительна.

Если сообщения о подтверждении модели не отображаются, когда вы ожидаете их, установите контрольную точку в контроллере на if (ModelState.IsValid) и проверьте модель. Затем проверьте аннотации данных. Для целей отладки вы можете вручную добавить ошибку состояния модели ModelSatate.AddModelError("fieldname", "This field has an error");, чтобы доказать, что помощник Razor работает.

0

Используйте этот

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

Спасибо для входов. Я закончил удаление инструкции if для ValidationSummary(). Чтобы справиться с тем, что я закончил, добавьте второй маленький скрипт, подобный показанному выше, но для события window.onload. Таким образом, он ловит ошибки ModelState, в то время как один выше обрабатывает навязчивый характер.

Смежные вопросы