【发布时间】:2018-06-24 21:30:48
【问题描述】:
我有一个这样的列表视图:
@model List<ABC.Models.InfoDetails>
我使用 for 循环来显示表格中的值,以便能够编辑每一行并使用提交按钮(在表格底部)将数据发布回控制器。
@using (Html.BeginForm("UpdateUsers", "User")) {
<table ...
<tbody>
@for (var i = 0; i < Model.Count(); i++) {
...
}
这些值是这样回传的:
[0].Title
[1].Title
等等
这很好,我在控制器中得到了正确的值。
我遇到的唯一问题是从每行的 select2 下拉元素中发布所选值。
<select class="js-select2 form-control" name="user" id="select2-user">
名称值(“用户”)被发布到控制器而不是名称[0].User
我的 Javascript:
var users = [
{ id: '0', text: 'Please choose...' },
{ id: '1', text: 'Paul' }
];
$("[name='user']").select2({
placeholder: "Select a user",
data: users
});
有没有办法将值放到每个用户属性的相应索引中?
我希望你能帮助我。
【问题讨论】:
-
使用
DropDownListFor()方法生成<select>,使其正确命名。 (和id="select2-user"生成重复的无效html) -
你能告诉我语法吗?这不起作用:
@Html.DropDownListFor(modelItem => modelItem[i].User, null, new { htmlAttributes = new { @name = "@modelItem[i].User", @class = "js-select2 form-control"} })“没有具有键 '[0].User' 的 'IEnumerable' 类型的 ViewData 项” -
(1)。使用
HtmlHelper方法时,切勿尝试更改name属性。 (2)。错误解释为here - 您需要将用户集合传递给视图(另请参阅this answer,了解有关在循环中使用下拉列表的更多详细信息
标签: javascript asp.net asp.net-mvc asp.net-mvc-5 jquery-select2