ASP.NET MVC DropDownList SelectedValue适用于编辑操作,但不适用于创建操作

时间:2010-05-19 21:26:33

标签: asp.net-mvc drop-down-menu

我的控制器中有以下代码(编辑和创建):

model.Templates = new SelectList(PageManagementService.PageTemplateFetchList(), "PageId", "Title", 213);

“213”是其中一个页面的ID - 仅用于测试。

这是我的观点(编辑和创建):

<%= this.Html.DropDownListFor(model => model.Page.TemplateId, this.Model.Templates)%>
<%= this.Model.Templates.SelectedValue %>

当我转到“创建”表单时,会看到下拉列表,但选择了值为“213”的标记。我甚至输出SelectedValue以确保它是213 - 我看到213.
当我转到“编辑”表单时,会看到下拉列表,并且选择了值为“213”的标记

在“创建”表单上,没有任何标签具有“已选择”属性 在编辑表单上,值为“213”的标记具有“已选择”属性。

我错过了什么吗?可能是什么导致了这个?有人以前看过这种行为吗?

更新:更改下拉列表的名称使其有效。例如,而不是

<%= this.Html.DropDownListFor(model => model.Page.TemplateId, this.Model.Templates)%>

我做了

<%= this.Html.DropDownList("somedropdown", this.Model.Templates)%>

它有效。不确定为什么......

1 个答案:

答案 0 :(得分:1)

可能会发生这种情况,因为DataValueField是一个字符串对象,并且可能在那里出现类型不匹配。

尝试这样的事情:

model.Templates = new SelectList(PageManagementService.PageTemplateFetchList(), "PageId", "Title", "213");