Проверка на стороне клиента DropDownList проверяется, когда это не должно быть.(MVC3, бритва) - PullRequest
1 голос
/ 28 февраля 2012

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

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

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

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

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

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

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

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

Теперь - в сегментах DropDownList не должно быть абсолютно никакой проверки - не должно быть никакой проверки на стороне клиента в раскрывающемся списке EITHER.

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

Недопустимое значение «1».

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

Ответы [ 2 ]

3 голосов
/ 28 февраля 2012

В вашем классе ViewModel добавьте [Bind (Exclude = "Segments")] *

От: Использование аннотаций данных для проверки модели

1 голос
/ 28 февраля 2012

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

public int fafhProdRecId { get; set; }

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

public int? fafhProdRecId { get; set; }

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

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