当我指定名称时,Html.DropDownList选择的值不起作用

时间:2013-01-30 20:34:58

标签: asp.net-mvc razor asp.net-mvc-4

我正在尝试在呈现页面时从下拉列表中选择特定选项。

在我的控制器上我有这个代码:
ViewBag.PropertyId = new SelectList(db.Properties, "PropertyId", "PropertyName", id.ToString());

在我看来,这不起作用。所选选项始终是第一个选项 @Html.DropDownList("PropertyId", (SelectList)ViewBag.PropertyId)

这对我的观点有效,选择了正确的选项。但是,我无法保存,因为我需要选择列表的名称为PropertyId,以便正确发布。
@Html.DropDownList("sadgfsadsaf", (SelectList)ViewBag.PropertyId)

有人可以帮我理解我应该在这做什么吗?我知道我应该使用viewmodel而不是Viewbag,但我只想让它先工作。

谢谢

2 个答案:

答案 0 :(得分:2)

之前我遇到过同样的问题,这是名字冲突。尝试更改下拉列表和/或值名称,看看会发生什么。

答案 1 :(得分:0)

当您回复到同一个控制器并发布回帖时,也可能发生名称冲突。再次查看,但想要更改控制器中的状态。

它将在ModelState对象中保留已发布的模型状态,并在渲染视图中恢复已发布状态。要更改控制器中的模型状态,您必须执行ModelState.Remove("PropertyId")或立即设置:

ModelState["PropertyId"].Value = new System.Web.Mvc.ValueProviderResult(id.ToString(), id.ToString(), System.Globalization.CultureInfo.CurrentCulture);