Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 在ASP.NETMVC中设置下拉菜单的选定值_Asp.net Mvc_Asp.net Mvc 2_Asp.net Mvc 3_Viewmodel - Fatal编程技术网

Asp.net mvc 在ASP.NETMVC中设置下拉菜单的选定值

Asp.net mvc 在ASP.NETMVC中设置下拉菜单的选定值,asp.net-mvc,asp.net-mvc-2,asp.net-mvc-3,viewmodel,Asp.net Mvc,Asp.net Mvc 2,Asp.net Mvc 3,Viewmodel,我有一个从ViewModel继承的ASP.NETMVC视图。ViewModel包含来自模型中两个实体的数据: public PaginatedList<Entry> Entries { get; private set; } public SelectList ColumnValues { get; private set; } 这将呈现页面,每一行的其中一个单元格中都有一个DropDownList。但是,对于第一行,选定的值始终设置为“ColumnValue”,对于所有行都是这样

我有一个从ViewModel继承的ASP.NETMVC视图。ViewModel包含来自模型中两个实体的数据:

public PaginatedList<Entry> Entries { get; private set; }
public SelectList ColumnValues { get; private set; }
这将呈现页面,每一行的其中一个单元格中都有一个DropDownList。但是,对于第一行,选定的值始终设置为“ColumnValue”,对于所有行都是这样

如何修改代码,使DropDownList的选定值与每个条目的ColumnValue相匹配


其目的是生成一种可编辑的数据网格,其中包含使用AJAX发回每行更改的链接。

让我们假设
ViewData[“ColumnValue”]=“5”
。现在,在您的
列values
选择列表中,您需要有一个值为“5”的项目,它将被自动选择。例如:

ColumnValues = new SelectList(new[] {
    new SelectListItem { Value = "1", Text = "Item 1" },
    new SelectListItem { Value = "2", Text = "Item 2" },
    new SelectListItem { Value = "3", Text = "Item 3" }
}, "Value", "Text");
然后
ViewData[“ColumnValue”]=“2”
将自动预选第二项。

在视图中使用DropDownListFor(),并将选择列表设置为以下工作:

new SelectList(Model.ColumnValues,"ColumnValue","ColumnValue", item.associatedField)

这似乎不是一种很好的做事方式,但它确实有效。这是目前最重要的事情。任何进一步的评论都将不胜感激。

您可以在上创建自定义html帮助程序,如我的更新代码(更新代码-用于MyDropdownListFor)所示,并使用“Selected”属性作为类属性。
希望这有帮助。

我没有使用ViewData[“”]方法。我使用的是ViewModel,所以我有Model.Entries和Model.columnValue。然后循环遍历Model.Entries enumerable,它是一个分页列表(从列表继承)。问题是,对于for-each循环的每次迭代,我需要视图中的选定项都不同。因此它反映了该行数据中的值。@班福德,如果您使用的是视图模型,为什么不使用强类型帮助程序:
Html.DropDownListFor(x=>x.ColumnValue,model.ColumnValues)
?然后,您在控制器中需要做的就是将
模型.ColumnValue
设置为
ColumnValues
集合中存在的某个值。切换到DropDownList for可以填充框,但仍然没有选择该值。我无法在控制器中设置此选项。因此,我必须在视图中构造SelectList,在该点设置selected值。我试图复制一个datagrid,在视图中使用for-each循环。我见过有人提到这样做,但没有人举过一个例子。
new SelectList(Model.ColumnValues,"ColumnValue","ColumnValue", item.associatedField)