Asp.net mvc 4 模型数据未绑定到dropdownlist mvc 4

Asp.net mvc 4 模型数据未绑定到dropdownlist mvc 4,asp.net-mvc-4,Asp.net Mvc 4,我有一个razor视图,我试图在其中实现创建和编辑选项。以下是下拉字段的cshtml代码: @Html.DropDownListFor(model => model.StateID, (SelectList)ViewBag.StateID, "--Select--", new { @Id = "ddlState" }) 但是,在编辑模式下,尽管所有其他字段都按照模型填充,但下拉列表不会按照模型显示保存的选定值。我使用了一个viewbag来填充下拉列表,效果很好。州在下拉列表中填充 Vie

我有一个razor视图,我试图在其中实现创建和编辑选项。以下是下拉字段的cshtml代码:

@Html.DropDownListFor(model => model.StateID, (SelectList)ViewBag.StateID, "--Select--", new { @Id = "ddlState" })
但是,在编辑模式下,尽管所有其他字段都按照模型填充,但下拉列表不会按照模型显示保存的选定值。我使用了一个viewbag来填充下拉列表,效果很好。州在下拉列表中填充

ViewBag.StateID = new SelectList(queryStatesInLookup, "LookupID", "LookupCode")

我调试了razor页面并进行了检查。我从模型中获取状态id(例如:8),但该值不会绑定到下拉列表。有什么好处/

当您创建SelectList时,需要在其中传入所选值

在下面的示例中,用实际选择的值替换
SelectedValue

ViewBag.StateID = new SelectList(queryStatesInLookup, "LookupID", "LookupCode", SelectedValue)

显然,Viewbag不能与模型ID绑定到的属性同名。我猜CLR无法在运行时解决动态对象类型Viewbag和模型属性名称之间的冲突。谢谢:)

在下拉列表中,根据lambda表达式设置所选值。因此,如果您在控制器上设置StateID,那么所选值将被设置。显然,问题是我给Viewbag的名称与模型引用的属性名称相同。这是一个不明显的错误,无法检测:/。谢谢你的努力:)