MVC 2 View показывает неверную информацию о модели - PullRequest
0 голосов
/ 17 ноября 2010

Я использую MVC 2 для проекта, и у меня проблема с видом.В контроллере у меня есть код:

return View(calendarDay);

Если я отлаживаю эту строку и проверяю calendarDay, он говорит мне, что свойство calendarDay.Id равно 2. В представлении у меня есть такой код:

<%: Html.HiddenFor(model => model.Id) %>

Однако, когда представление отображается после привязки его к календарному дню со свойством Id = 2, я получаю это на сгенерированном HTML:

<input id="Id" name="Id" type="hidden" value="1">

Значение равно 1, поэтому, когда ясделать TryUpdateModel (calendarDay), чтобы получить свойство Id 1 вместо 2, и когда я иду в хранилище, чтобы получить объект для его удаления, происходит сбой, потому что он находит неправильный.Кто-нибудь знает, что я могу делать не так?

Ответы [ 2 ]

1 голос
/ 17 ноября 2010

Я подозреваю, что вы пытаетесь изменить значение POSTed (которое равно 1) в вашем действии контроллера на 2. Это невозможно, потому что именно так работают все помощники HTML, и это так: они сначала посмотрят на POSTedзначение при связывании и после этого в модели.Таким образом, помощник HiddenFor игнорирует идентификатор вашей модели и использует опубликованный.

В качестве обходного пути вы можете:

<input type="hidden" name="Id" value="<%: Model.Id %>" />

Как предложено @jfar враздел комментариев другой обходной путь - очистить состояние модели в действии публикации перед возвратом представления:

MoselState.Clear();
0 голосов
/ 17 ноября 2010

Похоже, проблема в том, что представление использует идентификатор контроллера, а не модель.Я только что изменил имя параметра и теперь работает нормально.

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