Asp.net mvc ASP.NET MVC DropDownList SelectedValue适用于编辑操作,但不适用于创建操作
我的控制器中有以下代码(用于编辑和创建): “213”是其中一个页面的Id——只是用于测试 在我看来(对于编辑和创建):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”属性。 在编
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");