5

ViewBag 动态属性似乎存在问题。可以说我有:

@{
    ViewBag.Title = @Model.CourseName;
}

然后在页面上的表格中我有:

@Html.TextBox("Title", null, new {style="width:400px;"})

其中 Title 是数据库表中字段的名称。

当页面首次打开时,ID 为“Title”的文本框采用 ViewBag.Title 动态属性的值。

我对模型绑定的确切细节有点模糊,但这似乎是一个错误,或者如果不是,如果它是由于绑定过程而自然发生的事情,那么很高兴被警告这。

我发现的解决方法是将 ViewBag 属性重命名为:

@{
    ViewBag.Titulo = @Model.CourseName;
}

(标题更改为 Titulo - 总是很高兴知道另一种语言以避免名称冲突......)

问题就消失了。

然而,问题是:

这种行为是可以预期的吗?这个错误很容易找到(花了一个小时才弄清楚,包括写这个问题),但我怀疑其他错误可能更多,嗯,深奥。

编辑:

改写问题:

Model Binder 会自动绑定它在 ViewBag 中找到的属性吗?即使我已传递给页面的强类型 ViewModel 中存在现有属性?当然 ViewModel 应该优先考虑?

4

1 回答 1

5

Html.TextBox 先检查ViewData/ViewBag值,然后再检查Model. 为确保它Model有价值,您必须使用Html.TextBoxFor.

于 2011-02-24T12:08:23.740 回答