我在控制器中有以下代码:
ViewBag.CategoryName = new SelectList(catList, "key", "value");
其中catList是一个Dictionary,其中key的类型为string,value的类型为string。该字典填充正确,包含实际值(已确认和测试)。
在我看来,我有以下代码行:
@Html.DropDownListFor(model => model.CategoryName, (SelectList)ViewBag.CategoryName)
但是当我因某种原因运行页面时,未在下拉列表中选择模型类别名称的实际值。谁能告诉我这里的问题是什么?我的模型肯定有一个类别名称,该名称位于下拉列表的值列表中。角色的情况是一样的......
答案 0 :(得分:0)
显然这里的问题是ViewBag对象的名称不能与model属性的名称相同。在我的例子中,我将属性和Viewbag实例命名为CategoryName。当我将代码更改为:
ViewBag.Categories = new SelectList(catList, "key", "value");
和
@Html.DropDownListFor(model => model.CategoryName, (SelectList)ViewBag.Categories)
它运作得很好。我不确定为什么会这样,可能与模型绑定字典有关,但这是肯定的原因。任何人都可以在这里解释窗帘背后的实际情况,为什么这个命名有问题?