Asp.net mvc 如何使用aspnet core c从双列表框中检索所选值#
我已经在我的aspnet核心网站中合并了引导双列表框,但我不知道如何在正确的列表框中检索所选的值(多个值) 在我的网站上,我有一个语言下拉框和一个双重列表框,每次我更改语言时,它们都会加载不同的任务 我的ViewModel.csAsp.net mvc 如何使用aspnet core c从双列表框中检索所选值#,asp.net-mvc,asp.net-core,listbox,selected,Asp.net Mvc,Asp.net Core,Listbox,Selected,我已经在我的aspnet核心网站中合并了引导双列表框,但我不知道如何在正确的列表框中检索所选的值(多个值) 在我的网站上,我有一个语言下拉框和一个双重列表框,每次我更改语言时,它们都会加载不同的任务 我的ViewModel.cs public class QuestViewModel { public IEnumerable<string> QuestIds { get; set; } public string Language { get; set; }
public class QuestViewModel
{
public IEnumerable<string> QuestIds { get; set; }
public string Language { get; set; }
public List<SelectListItem> Quests { set; get; }
}
公共类QuestViewModel
{
公共IEnumerable问题{get;set;}
公共字符串语言{get;set;}
公共列表任务{set;get;}
}
我的cshtml
<form asp-action="add" role="form">
<div class="form-group">
<label>Language</label>
<select asp-for="Language" class="form-control m-b" id="idLanguage">
<option value="PT">PT</option>
<option value="FR">FR</option>
<option value="UK">UK</option>
<option value="ES">ES</option>
</select>
</div>
<div class="form-group">
<select asp-for="QuestIds" asp-items="@Model.Quests" class="form-control dual_select" multiple="multiple" name="duallistbox_quest">
</select>
</div>
</form>
语言
PT
FR
英国
锿
我的javascript使用ajax,调用apicontroller再次填充双列表框
$(document).ready(function () {
$('[name=duallistbox_quest]').bootstrapDualListbox({
selectorMinimalHeight: 200
});
$("#idLanguage").on("change", function () {
$.ajax({
url: "/Quest/GetAllQuests",
type: "GET",
dataType: "JSON",
data: { Id: $("#idLanguage").val() }, //id of the language
traditional: true,
success: function (result) {
$('[name=duallistbox_quest]').empty();
$.each(result, function (i, item) {
$('[name=duallistbox_quest]').append($('<option value="' + item["value"] + '"> ' + item["text"] + ' </option>'));
});
$('[name=duallistbox_quest]').bootstrapDualListbox('refresh', true);
},
error: function () {
alert("Error oops.");
}
});
});
});
$(文档).ready(函数(){
$('[name=duallistbox_quest]')。bootstrapDualListbox({
选择器最小高度:200
});
$(“#idLanguage”)。关于(“更改”,函数(){
$.ajax({
url:“/Quest/GetAllQuests”,
键入:“获取”,
数据类型:“JSON”,
数据:{Id:$(“#idLanguage”).val()},//语言的Id
传统的:是的,
成功:功能(结果){
$('[name=duallistbox_quest]')。空();
$。每个(结果、功能(i、项目){
$('[name=duallistbox_quest]')。追加($(''+项[“文本”]+'');
});
$('[name=duallistbox_quest]')。bootstrapDualListbox('refresh',true);
},
错误:函数(){
警报(“错误oops”);
}
});
});
});
我的职位
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> add(QuestViewModel model)
{
return View();//just to test
}
[HttpPost]
[ValidateAntiForgeryToken]
公共异步任务添加(QuestViewModel模型)
{
return View();//仅用于测试
}
在我的帖子中,viewmodel的model.QuestIds始终为空
这里缺少什么
提前谢谢
致以最良好的祝愿
Jolynice.我找到了解决办法
我需要通过viewmodel属性更改dual listbox的名称,如下所示
<div class="form-group">
<select asp-for="QuestIds" asp-items="@Model.Quests" class="form-control dual_select" multiple="multiple" name="QuestIds">
</select>
</div>
然后别忘了更新javascript脚本