Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/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 如何使用aspnet core c从双列表框中检索所选值#_Asp.net Mvc_Asp.net Core_Listbox_Selected - Fatal编程技术网

Asp.net mvc 如何使用aspnet core c从双列表框中检索所选值#

Asp.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; }

我已经在我的aspnet核心网站中合并了引导双列表框,但我不知道如何在正确的列表框中检索所选的值(多个值)

在我的网站上,我有一个语言下拉框和一个双重列表框,每次我更改语言时,它们都会加载不同的任务

我的ViewModel.cs

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脚本