【问题标题】:Drop down list fails to bind/display selected model value when bound via Viewbag通过 Viewbag 绑定时,下拉列表无法绑定/显示选定的模型值
【发布时间】:2013-01-09 15:46:55
【问题描述】:

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

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

其中 catList 是一个字典,其中键是字符串类型,值是字符串类型。此字典已正确填充并包含实际值(已确认和测试)。

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

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

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

【问题讨论】:

  • 不要使用ViewBag!使用带有SelectListSelectedItem 属性的viewModel

标签: model-view-controller binding model viewbag


【解决方案1】:

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

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

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

它工作得很好。我不确定这是为什么,可能与模型绑定字典有关,但这是肯定的原因。谁能解释这里幕后实际发生的事情以及为什么这个命名有问题?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-27
    • 2018-04-11
    相关资源
    最近更新 更多