Привязка модели ASP.NET MVC 3 - столкновение ViewBag.Title с вводом id="Title"
Кажется, есть проблема с динамическими свойствами ViewBag. Допустим, у меня есть:
@{
ViewBag.Title = @Model.CourseName;
}
И тогда в форме на странице у меня есть:
@Html.TextBox("Title", null, new {style="width:400px;"})
Где Название - это имя поля в таблице базы данных.
Когда страница открывается впервые, текстовое поле с идентификатором "Заголовок" принимает значение динамического свойства ViewBag.Title.
Я немного запутался в точных деталях привязки модели, но, похоже, это ошибка, а если нет, то если это происходит естественным образом в результате процесса привязки, то было бы неплохо предупредить о этот.
Обход, который я нашел, состоял в том, чтобы переименовать свойство ViewBag в:
@{
ViewBag.Titulo = @Model.CourseName;
}
(Название изменено на Titulo - Всегда приятно знать другой язык, чтобы избежать столкновений имен...)
И проблема ушла.
Однако вопрос заключается в следующем:
Можно ли ожидать такого поведения? Эту ошибку было легко найти (потребовался час, чтобы разобраться с ней, включая написание этого вопроса), но я подозреваю, что другие ошибки могут быть более, ммм, второстепенными.
РЕДАКТИРОВАТЬ:
Перефразируя вопрос:
Связывание модели автоматически связывает свойства, которые оно находит в ViewBag? Даже когда существующее свойство существует в строго типизированной ViewModel, которую я передал на страницу? Конечно, ViewModel должен иметь предпочтение?
1 ответ
Html.TextBox проверяет ViewData
/ViewBag
сначала значения, потом Model
, Чтобы убедиться, что это занимает Model
значение, вы должны использовать Html.TextBoxFor
,