通过Viewbag绑定时,下拉列表无法绑定/显示所选的模型值

时间:2013-01-09 15:46:55

标签: model-view-controller binding model viewbag

我在控制器中有以下代码:

 ViewBag.CategoryName = new SelectList(catList, "key", "value");

其中catList是一个Dictionary,其中key的类型为string,value的类型为string。该字典填充正确,包含实际值(已确认和测试)。

在我看来,我有以下代码行:

 @Html.DropDownListFor(model => model.CategoryName, (SelectList)ViewBag.CategoryName)

但是当我因某种原因运行页面时,未在下拉列表中选择模型类别名称的实际值。谁能告诉我这里的问题是什么?我的模型肯定有一个类别名称,该名称位于下拉列表的值列表中。角色的情况是一样的......

1 个答案:

答案 0 :(得分:0)

显然这里的问题是ViewBag对象的名称不能与model属性的名称相同。在我的例子中,我将属性和Viewbag实例命名为CategoryName。当我将代码更改为:

 ViewBag.Categories = new SelectList(catList, "key", "value");

 @Html.DropDownListFor(model => model.CategoryName, (SelectList)ViewBag.Categories)

它运作得很好。我不确定为什么会这样,可能与模型绑定字典有关,但这是肯定的原因。任何人都可以在这里解释窗帘背后的实际情况,为什么这个命名有问题?