Проверка DropDownList на стороне клиента проверяет, когда этого не должно быть. (MVC3, Бритва)

Я все еще изучаю MVC3 и Razor, так что это, пожалуй, простой вопрос.

В представлении у меня есть DropDownList, единственной целью которого является помощь в фильтрации (через AJAX) второго раскрывающегося списка:

@Html.DropDownList("Segments", "-- select segment --")

Существует свойство Segments ViewModel, которое определяется как:

public IEnumerable<SelectListItem> Segments { get; set; }

Существует JavaScript, который обрабатывает событие изменения для этого DropDownList и заполняет другой DropDownList соответствующими значениями. Этот другой DropDownList определяется следующим образом:

@Html.DropDownListFor(m => m.fafhProdRecId, Enumerable.Empty<SelectListItem>(), "-- select product recommendation --")

Все это работает нормально, пока я не отправлю. Когда я отправляю, я получаю ошибку проверки в раскрывающемся списке «Сегменты»!

Теперь - не должно быть абсолютно НИКАКОЙ проверки в сегментах DropDownList - не должно быть никакой проверки на стороне клиента в ЛЮБОМ раскрывающемся списке, если на то пошло.

Но когда я пытаюсь отправить, я получаю сообщение об ошибке проверки:

Значение "1" недопустимо.

Я понятия не имею, почему это происходит. Я понятия не имею, как украсить свойство Segments, чтобы сказать, что оно НЕ требуется. Я понятия не имею, как сказать ненавязчивому валидатору javascript, что он на самом деле довольно навязчив.


person CleverPatrick    schedule 28.02.2012    source источник
comment
Эй, разве мы все не согласились иметь удобочитаемые имена переменных? ☺   -  person MrBoJangles    schedule 28.02.2012


Ответы (2)



убедитесь, что ваша модель имеет fafhProdRecId значение nullable, я полагаю, что она объявлена ​​​​как:

public int fafhProdRecId { get; set; }

изменить это на:

public int? fafhProdRecId { get; set; }

надеюсь, это должно решить проблему, поскольку это эффективно делает поле модели обнуляемым (конечно, при условии, что поле db IS NULLable тоже).

person jim tollan    schedule 28.02.2012
comment
ошибка (кажется) в сегменте, а не в fafhProdRecId. Однако я попробовал ваше изменение, и, похоже, это не имело никакого значения. В раскрывающемся списке «Сегменты» по-прежнему отображается значение «1» — недопустимое сообщение. - person CleverPatrick; 28.02.2012