Атрибуты проверки на стороне клиента для скрытых, радио, выпадающих элементов по умолчанию в asp.net mvc 3

Я использую ASP.NET MVC 3 + FLUENT VALIDATION + NINJECT

У меня есть модель X и правила для этой модели примерно такие:

RuleFor(c => c.FirstName).NotEmpty();
RuleFor(c => c.LastName).NotEmpty();

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

<input type="hidden" value="1" name="Id" id="Id" data-val-required="&amp;#39;Id&amp;#39; must not be empty." data-val-number="The field Id must be a number." data-val="true">

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

Кто-нибудь имел подобные проблемы или знает об этом, или я должен вытащить источник ASP.NET MVC и найти его самостоятельно?:)

Полу-ленивый и немного сдвинутый по срокам кодер

Редактировать:

Я попробовал предложенное решение по этой ссылке:

Свободные проверки. Ошибка: имена типов проверки в ненавязчивых правилах проверки клиентов должны быть уникальными

но asp.net mvc выдает обязательные атрибуты для каждого поля независимо от настроек AddImplicitRequiredAttribute...

1 ответ

Сделать Id Свойство по вашему мнению моделирует обнуляемое целое число.

Так что вместо:

public int Id { get; set; }

вы должны использовать:

public int? Id { get; set; }

То же самое относится и к любым другим типам значений, которые вам не нужны. Вы должны использовать обнуляемые типы.

Помощники HTML автоматически испускают data-val атрибуты для всех ненулевых типов, которые разработаны специально, и если вы не хотите этого поведения, вам придется написать свои собственные HTML-помощники, чтобы сгенерировать поля ввода и выпадающие списки. Вы больше не можете полагаться на помощников TextBoxFor и DropDownListFor, так как они разработаны.

Другие вопросы по тегам