awr*_*ley 5 model-binding name-clash viewbag asp.net-mvc-3
ViewBag动态属性似乎存在问题.让我们说:
@{
ViewBag.Title = @Model.CourseName;
}
Run Code Online (Sandbox Code Playgroud)
然后在页面上我有一个表格:
@Html.TextBox("Title", null, new {style="width:400px;"})
Run Code Online (Sandbox Code Playgroud)
其中Title是数据库表中字段的名称.
首次打开页面时,ID为"Title"的文本框将获取ViewBag.Title动态属性的值.
我对模型绑定的确切细节有点模糊,但这似乎是一个错误,或者如果没有,如果它是由于绑定过程而自然发生的事情,那么警告它会很好这个.
我找到的工作是将ViewBag属性重命名为:
@{
ViewBag.Titulo = @Model.CourseName;
}
Run Code Online (Sandbox Code Playgroud)
(标题改为Titulo - 总是很高兴知道另一种语言以避免姓名冲突......)
问题消失了.
但问题是:
这种行为是期待的吗?这个漏洞很容易找到(花了一个小时来弄清楚,包括写这个问题),但我怀疑其他漏洞可能更多,嗯,晦涩难懂.
解释这个问题:
Model Binder是否自动绑定它在ViewBag中找到的属性?即使强类型ViewModel中存在现有属性,我已经传递到页面?当然ViewModel应该优先考虑吗?