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