listboxfor/listbox post 的多项选择仅最后选择的项目
Multiple selection with listboxfor/listbox post only last selected item
我正在尝试使用 Razor 的 ListBoxFor 执行多个 selection,但是 select 不允许我 select 多个项目(我只能这样做 select使用 Ctr+单击第二个项目来编辑我的项目)。我已将我的代码减少到最小,如 中所示的示例(我的代码在上面)。谁能帮帮我??我很绝望。
我的模型
public IEnumerable<int> ParoleChiave { get; set; }
public IEnumerable<SelectListItem> ListaParoleChiave { get; set; }
我的控制器
model.ListaParoleChiave = new List<SelectListItem>() {
new SelectListItem(){ Text = "Pro", Value = "2"},
new SelectListItem(){ Text = "Test", Value = "3"}
};
我的看法
<div class="form-group form-group-sm">
<label class="col-xs-12">Parole chiave</label>
<div class="col-xs-12">
@Html.ListBoxFor(m => m.ParoleChiave, Model.ListaParoleChiave, new { @class = "form-control", style = "width: 100%" })
</div>
</div>
我发现了错误。它不依赖于我的 ListBoxFor 元素,它是由我写到 post 的 js 代码引起的,服务器操作是我的 formData 和附加数据。
基本上是这样的:
data: function (d) {
var fd = new FormData(myForm[0]);
for (var pair of fd.entries()) {
d[pair[0]] = pair[1];
}
return d;
}
我意识到 posting 的多个值就像 FormData 的两个条目(key/value 对)但具有相同的键名,所以我的代码用第二个条目覆盖了第一个条目.我用上面的代码替换了,现在它就像一个魅力。
data: function (d) {
var fd = new FormData(myForm[0]);
for (var pair of fd.entries()) {
var occurenceOfKey = Array.from(fd.keys()).reduce(function (n, val) {
return n + (val === pair[0]);
}, 0);
if (occurenceOfKey > 1)
d[pair[0]] = fd.getAll(pair[0]);
else
d[pair[0]] = pair[1];
}
return d;
}
我正在尝试使用 Razor 的 ListBoxFor 执行多个 selection,但是 select 不允许我 select 多个项目(我只能这样做 select使用 Ctr+单击第二个项目来编辑我的项目)。我已将我的代码减少到最小,如
我的模型
public IEnumerable<int> ParoleChiave { get; set; }
public IEnumerable<SelectListItem> ListaParoleChiave { get; set; }
我的控制器
model.ListaParoleChiave = new List<SelectListItem>() {
new SelectListItem(){ Text = "Pro", Value = "2"},
new SelectListItem(){ Text = "Test", Value = "3"}
};
我的看法
<div class="form-group form-group-sm">
<label class="col-xs-12">Parole chiave</label>
<div class="col-xs-12">
@Html.ListBoxFor(m => m.ParoleChiave, Model.ListaParoleChiave, new { @class = "form-control", style = "width: 100%" })
</div>
</div>
我发现了错误。它不依赖于我的 ListBoxFor 元素,它是由我写到 post 的 js 代码引起的,服务器操作是我的 formData 和附加数据。 基本上是这样的:
data: function (d) {
var fd = new FormData(myForm[0]);
for (var pair of fd.entries()) {
d[pair[0]] = pair[1];
}
return d;
}
我意识到 posting 的多个值就像 FormData 的两个条目(key/value 对)但具有相同的键名,所以我的代码用第二个条目覆盖了第一个条目.我用上面的代码替换了,现在它就像一个魅力。
data: function (d) {
var fd = new FormData(myForm[0]);
for (var pair of fd.entries()) {
var occurenceOfKey = Array.from(fd.keys()).reduce(function (n, val) {
return n + (val === pair[0]);
}, 0);
if (occurenceOfKey > 1)
d[pair[0]] = fd.getAll(pair[0]);
else
d[pair[0]] = pair[1];
}
return d;
}