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

Asp.net mvc ASP.NET MVC DropDownList SelectedValue适用于编辑操作,但不适用于创建操作,asp.net-mvc,drop-down-menu,Asp.net Mvc,Drop Down Menu,我的控制器中有以下代码(用于编辑和创建): “213”是其中一个页面的Id——只是用于测试 在我看来(对于编辑和创建): model.Page.TemplateId,this.model.Templates)%> 当我转到创建表单时,我看到了下拉列表,但value=“213”标记未被选中。我甚至输出SelectedValue以确保它是213-我看到了213。 当我转到编辑表单时,我看到下拉列表,并且选择了value=“213”标记 在创建表单上,没有任何标记具有“selected”属性。 在编

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

“213”是其中一个页面的Id——只是用于测试

在我看来(对于编辑和创建):

model.Page.TemplateId,this.model.Templates)%>
当我转到创建表单时,我看到了下拉列表,但value=“213”标记未被选中。我甚至输出SelectedValue以确保它是213-我看到了213。
当我转到编辑表单时,我看到下拉列表,并且选择了value=“213”标记

在创建表单上,没有任何标记具有“selected”属性。
在编辑表单上,value=“213”的标记具有“selected”属性

我错过什么了吗?这可能是什么原因造成的?有人见过这种行为吗

更新:更改dropdownlist的名称可使其正常工作。例如,代替

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

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


它成功了。不确定为什么…

会发生这种情况,因为
数据值字段是字符串对象,可能存在类型不匹配

试着这样做:

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

这可能是因为
DataValueField
是一个字符串对象,并且可能存在类型不匹配

试着这样做:

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

那没用。但是,更改Dropdownlist的名称确实有效。有什么想法吗?但现在存钱不管用,对吧?问题可能在于DropDownListFor(
model=>model.Page.TemplateId
..)这对于
EditorForModel
方法来说是相当复杂的。向模型中添加一个虚拟int字段可能会使其正常工作:
DropDownlistFor(model=>model.DummyField,model.Templates)
很好,保存工作正常,因为我从FormCollection中手动获取了所选值。我尝试在我的模型中添加一个虚拟的int字段,但也没有成功。现在,我要用有效的,但没有用。但是,更改Dropdownlist的名称确实有效。有什么想法吗?但现在存钱不管用,对吧?问题可能在于DropDownListFor(
model=>model.Page.TemplateId
..)这对于
EditorForModel
方法来说是相当复杂的。向模型中添加一个虚拟int字段可能会使其正常工作:
DropDownlistFor(model=>model.DummyField,model.Templates)
很好,保存工作正常,因为我从FormCollection中手动获取了所选值。我尝试在我的模型中添加一个虚拟的int字段,但也没有成功。现在,我将使用有效的方法。
model.Templates = new SelectList(PageManagementService.PageTemplateFetchList(), "PageId", "Title", "213");