ViewBag 动态属性似乎存在问题。可以说我有:
@{
ViewBag.Title = @Model.CourseName;
}
然后在页面上的表格中我有:
@Html.TextBox("Title", null, new {style="width:400px;"})
其中 Title 是数据库表中字段的名称。
当页面首次打开时,ID 为“Title”的文本框采用 ViewBag.Title 动态属性的值。
我对模型绑定的确切细节有点模糊,但这似乎确实是一个错误,或者如果不是,如果它是绑定过程中自然发生的事情,那么最好被警告这。
我发现的解决方法是将 ViewBag 属性重命名为:
@{
ViewBag.Titulo = @Model.CourseName;
}
(标题更改为 Titulo - 了解另一种语言总是很好,以避免名称冲突......)
然后问题就消失了。
然而,问题是:
这种行为是预期的吗?这个错误很容易找到(花了一个小时才弄清楚,包括写这个问题),但我怀疑其他错误可能更,呃,深奥。
EDIT:
重新表述一下问题:
Model Binder 是否会自动绑定在 ViewBag 中找到的属性?即使我传递到页面的强类型 ViewModel 中存在现有属性? ViewModel 肯定应该优先吗?