我正在尝试在呈现页面时从下拉列表中选择特定选项。
在我的控制器上我有这个代码:
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,但我只想让它先工作。
谢谢
答案 0 :(得分:2)
之前我遇到过同样的问题,这是名字冲突。尝试更改下拉列表和/或值名称,看看会发生什么。
答案 1 :(得分:0)
当您回复到同一个控制器并发布回帖时,也可能发生名称冲突。再次查看,但想要更改控制器中的状态。
它将在ModelState对象中保留已发布的模型状态,并在渲染视图中恢复已发布状态。要更改控制器中的模型状态,您必须执行ModelState.Remove("PropertyId")
或立即设置:
ModelState["PropertyId"].Value = new System.Web.Mvc.ValueProviderResult(id.ToString(), id.ToString(), System.Globalization.CultureInfo.CurrentCulture);