0

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

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

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

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

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

谢谢

4

2 回答 2

2

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

于 2013-01-30T20:44:50.497 回答
0

当您再次回发到同一个控制器和视图时,也可能会发生名称冲突,但想要更改控制器中的状态。

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

ModelState["PropertyId"].Value = new System.Web.Mvc.ValueProviderResult(id.ToString(), id.ToString(), System.Globalization.CultureInfo.CurrentCulture);
于 2013-03-30T10:27:18.023 回答