Как сделать поле обязательным без аннотации данных - PullRequest
2 голосов
/ 23 января 2012

Я использую MvcContrib Grid для отображения таблицы на странице. Я использую пользовательский столбец для создания флажка в таблице, чтобы пользователь мог выбрать несколько строк и отправить форму.

Я не хочу отправлять форму, если не был установлен хотя бы один флажок. Я мог бы легко написать этот Javascript для обеспечения проверки, но я хотел знать, как я мог бы вписать его в ненавязчивую библиотеку, поставляемую с MVC3.

Я предполагаю, что мне просто нужно установить свои входные данные с соответствующими классами и атрибутами, а затем скрипты (validate и validate.unobtrusive) на странице должны их подобрать и пометить как требующие проверки, но я не смог чтобы получить правильную комбинацию до сих пор.

Вот входные данные, которые я генерирую в данный момент:

<input type="checkbox" 
       name="foo" 
       value="@item.foo" 
       class="input-validation-error" 
       data-val-required="Please select an option." 
       data-val="true" />

Ответы [ 3 ]

1 голос
/ 18 июня 2013

Исходя из моего опыта, обычно не замечаемая ошибка при отображении проверки на стороне клиента помещает Html.ValidationMessageFor (lambda) на страницу.

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

Надеюсь, это поможет.

1 голос
/ 23 января 2012

Попробуйте установить атрибуты data-val для элемента, затем вы должны сообщить jQuery, что у вас есть новый контент, для повторного анализа формы с помощью чего-то вроде:

 $.validator.unobtrusive.parse($('#yourForm'));

, где форма, конечно, является ссылкойк вашему элементу формы.

Также есть отличная публикация, и у jQuery есть несколько внутренних адаптеров, которые вы можете вызвать: от http://www.devtrends.co.uk/blog/the-complete-guide-to-validation-in-asp.net-mvc-3-part-2

jQuery.validator.unobtrusive.adapters.addSingleVal("notequalto", "otherproperty", "mynotequaltofunction")
0 голосов
/ 23 января 2012
<div class="editor-field">
    <input class="text-box single-line" 
    data-val="true" data-val-number="The field Qty Available must be a number." 
    data-val-range="The field Qty Available must be between 0 and 120." 
    data-val-range-max="120" data-val-range-min="0" 
    data-val-required="The Qty Available field is required." 
    id="QtyOnHand" name="QtyOnHand" type="text" value="12" />
    <span class="field-validation-valid" data-valmsg-for="QtyOnHand" 
          data-valmsg-replace="true"></span>
</div>

Взаимосвязь между аннотациями модели данных и атрибутами data-val- * должна быть понятна после прочтения приведенного выше кода, но в этом случае проверка на стороне клиента может оказаться не столь очевидной. Откройте файл \ Scripts \ jquery.validate.unobtrusive.js и найдите «data-val». Сразу же вы увидите, что JavaScript использует CSS-классы data-val- , input- и field- * для отображения / скрытия сообщений проверки на клиенте.

Вышесказанное взято из этой замечательной статьи , которую вы, возможно, захотите прочитать полностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...