我的控制器中有以下代码(编辑和创建):
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)%>
它有效。不确定为什么......
答案 0 :(得分:1)
可能会发生这种情况,因为DataValueField
是一个字符串对象,并且可能在那里出现类型不匹配。
尝试这样的事情:
model.Templates = new SelectList(PageManagementService.PageTemplateFetchList(), "PageId", "Title", "213");