1
我在我的控制器中执行以下代码(编辑和创建):ASP.NET MVC的DropDownList的SelectedValue适用于编辑操作,但不能创建行动
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.
当我转到Edit窗体时,我看到下拉列表,并且value =“213”的标记被选中为。
在创建表单上,没有任何标签具有“选定”属性。
在编辑表单上,value =“213”的标签具有“selected”属性。
我错过了什么吗?什么可能导致这个?任何人都看到过这种行为?
更新:更改下拉列表的名称使其工作。例如,而不是
<%= this.Html.DropDownListFor(model => model.Page.TemplateId, this.Model.Templates)%>
我做
<%= this.Html.DropDownList("somedropdown", this.Model.Templates)%>
和它的工作。不知道为什么......
这没有奏效。但是,更改Dropdownlist的名称确实有效。有任何想法吗? – davekaro 2010-05-19 21:37:26
但现在保存不起作用,对吧? 这个问题可能在于DropDownListFor('model => model.Page.TemplateId' ...) 这对于'EditorForModel'方法理解起来相当复杂。 在模型中添加虚拟int字段可能会使其工作:'DropDownlistFor(model => model.DummyField,Model.Templates)' – 2010-05-19 22:07:11
好吧,保存工作,因为我手动从FormCollection中获取选定的值。我尝试在我的模型中添加一个虚拟int字段 - 但这也不起作用。现在,我将使用正在工作的内容。 – davekaro 2010-05-21 15:16:07