Параметр строки запроса MVC3 и поле ввода имеют одинаковое имя - PullRequest
0 голосов
/ 19 октября 2011

У меня есть параметр запроса с именем "from" (a from date) а также вход, который привязывается к свойству с именем From

В моем конструкторе ViewModel я установил для свойства From дату ...

Это работает, если имя параметра запроса и имя свойства различны, но если они совпадают с MVC3, при этом какое-то волшебство принимает любое значение, которое есть в параметре запроса, и связывается с этим, не имеет значения, какое значение содержится в From собственность .. почему? эта атуомагия настолько неправильна на многих уровнях! Как это отключить?

edit: Неважно, какое значение получает свойство, если строка запроса существует с тем же идентификатором, что и MVC, автоматически принимающий это значение, присваивает его элементу ввода

Ответы [ 2 ]

2 голосов
/ 07 января 2012

Вам нужно позвонить

ModelState.Clear();

Перед тем как вернуться из действия вашего контроллера.

Проблема в том, что ModelState имеет значение из строки запроса, и оно имеет приоритет над значением в вашей модели, когда происходит связывание.

Является ли это ошибкой или функцией, зависит от вашей точки зрения ... http://blogs.msdn.com/b/simonince/archive/2010/05/05/asp-net-mvc-s-html-helpers-render-the-wrong-value.aspx

0 голосов
/ 19 октября 2011

MVC работает по соглашению и привязывает значения к модели по именам.Чтобы понять, что происходит, я предлагаю вам прочитать эту статью в блоге Фила Хаака: В чем разница между поставщиком значений и связывателем модели?

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

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