Asp.net mvc 3 永远不会设置selectedValue的HTML.SelectListFor
我有以下显示下拉列表的局部视图: 我在页面上呈现它,如下所示: 对于每个截面对象,局部视图渲染一次。我已经创建了一个截面对象,可以在jquery对话框中进行编辑,可以更改名称、显示顺序、停靠模板列等 在我正在使用的测试页面上,此分区对话框呈现四次,因为父对象中有四次 问题是: *下拉列表中的SelectedValue永远不会被设置*-也就是说,当对话框显示时,下拉列表中的正确项永远不会被选择,我不太明白为什么 我想这可能是因为下拉列表渲染了四次,所以我尝试只渲染其中一个“部分”,但仍然存在相同的问题 有人知道我能做什么吗 ***编辑 不知道我是不是在用一种糟糕的方式做。我曾想过只使用jquery和json构建一次对话框,但我更喜欢这样做,因为它感觉更干净。我这样做: 在控制器动作编辑中,例如:Asp.net mvc 3 永远不会设置selectedValue的HTML.SelectListFor,asp.net-mvc-3,razor,Asp.net Mvc 3,Razor,我有以下显示下拉列表的局部视图: 我在页面上呈现它,如下所示: 对于每个截面对象,局部视图渲染一次。我已经创建了一个截面对象,可以在jquery对话框中进行编辑,可以更改名称、显示顺序、停靠模板列等 在我正在使用的测试页面上,此分区对话框呈现四次,因为父对象中有四次 问题是: *下拉列表中的SelectedValue永远不会被设置*-也就是说,当对话框显示时,下拉列表中的正确项永远不会被选择,我不太明白为什么 我想这可能是因为下拉列表渲染了四次,所以我尝试只渲染其中一个“部分”,但仍然存在相同的
ViewData["ProvinceID"] = new SelectList(dc.Provinces.OrderBy(p => p.NameAr), "ID", "NameAr", factory.ProvinceID);
和标记:
<%: Html.DropDownList("ProvinceID") %>
看到了吗?这是一个工厂列表,它有一个省域,我想让你注意的是SelectList构造函数中的第四个参数,我传递了factory.ProvinceID,所以DropDownList知道要设置哪个选项。否则,DropDownList将显示第一个默认值
附言:你的工作就是改变你的语法;我不用它
希望能有帮助。Doh。。。修正-完全是我自己的错 我已经像这样设置了我的html.dropdownlist @Html.DropDownListForx=>x.Name 本来应该是这样的: @Html.DropDownListForx=>x.DockTemplateColumn.Id 将第一个参数设置为x=>x.DockTemplateColumn.Id,它可以唯一地标识我列表中的项目,而不是x.Name。这个问题马上得到了解决 我只是想把它贴在这里,以防有人犯我犯的同样的错误 编辑 在这里找到了答案:
我有一种感觉,有人可能会说在控制器中执行,我知道这很可能解决问题。因为我的对象模型具有下拉完整列表和选定项所需的一切,所以我不需要通过控制器填充它。我在构建主视图时构建部分视图,包括下拉列表。谢谢你。
ViewData["ProvinceID"] = new SelectList(dc.Provinces.OrderBy(p => p.NameAr), "ID", "NameAr", factory.ProvinceID);
<%: Html.DropDownList("ProvinceID") %>