Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.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
Javascript 如何回发多选列表中的所有选定项,使其包含在视图模型中?_Javascript_Jquery_Html_Asp.net Core Mvc_Asp.net Core 2.1 - Fatal编程技术网

Javascript 如何回发多选列表中的所有选定项,使其包含在视图模型中?

Javascript 如何回发多选列表中的所有选定项,使其包含在视图模型中?,javascript,jquery,html,asp.net-core-mvc,asp.net-core-2.1,Javascript,Jquery,Html,Asp.net Core Mvc,Asp.net Core 2.1,我有一个ASP.NETCore2.1MVC网站,我正在开发 在我的一个视图中,我设置了两个多选列表,以允许客户端通过在左侧列表中提供所有未分配用户的列表和在右侧列表中提供分配用户的列表来为站点分配用户,使用html/javascript/SCS示例。这很好用 对于回帖,我意识到我需要在提交时选择新的“已分配用户”列表中的所有项目,因此我使用javascript在用户单击更新(提交)按钮时将“已分配用户”列表中的所有选项设置为true 但是,我没有获取模型中的用户列表,因此我可以在回发的控制器中与

我有一个ASP.NETCore2.1MVC网站,我正在开发

在我的一个视图中,我设置了两个多选列表,以允许客户端通过在左侧列表中提供所有未分配用户的列表和在右侧列表中提供分配用户的列表来为站点分配用户,使用html/javascript/SCS示例。这很好用

对于回帖,我意识到我需要在提交时选择新的“已分配用户”列表中的所有项目,因此我使用javascript在用户单击更新(提交)按钮时将“已分配用户”列表中的所有选项设置为true

但是,我没有获取模型中的用户列表,因此我可以在回发的控制器中与他们一起工作。模型中分配的用户列表在传递到控制器post方法时始终具有0计数

这是我在视图中的多选列表HTML

<!-- User Assignment Tab -->
<div role="tabpanel" class="tab-pane" id="assignUsersTab" aria-labelledby="assign-users-tab">

    <div class="card-body ml3 mr3">

        <div class="row">


            <div class="col-5">
                <label>Users Assigned to Site</label>
                <select multiple="multiple" id="lstBox1" name="AssignedUserList" size="10"  asp-items="@(new SelectList(Model.AssignedUserList, "UserId", "Name"))" class="form-control">
                </select>
            </div>

            <div class="col-2 text-center subject-info-arrows pt-5">
                <input type="button" id="btnAllRight" value=">>" class="btn btn-default"/><br/>
                <input type="button" id="btnRight" value=">" class="btn btn-default"/><br/>
                <input type="button" id="btnLeft" value="<" class="btn btn-default"/><br/>
                <input type="button" id="btnAllLeft" value="<<" class="btn btn-default"/>
            </div>

            <div class="col-5">
                <label>Unassigned Company Users</label>
                <select multiple="multiple" id="lstBox2" size="10" name="UnassignedUserList" asp-items="@(new SelectList(Model.UnassignedUserList, "UserId", "Name"))" class="form-control"></select>
            </div>
            <div class="clearfix"></div>

        </div>


    </div>

</div>
当我在Chrome中使用F12时,我可以看到console.log被击中

这是我的控制器中的后期编辑方法签名

[HttpPost]
public async Task<IActionResult> Edit(EditSiteViewModel editSite, string cancel)
[HttpPost]
公共异步任务编辑(EditSiteViewModel editSite,字符串取消)
当我在提交时检查EditSiteViewModel的属性时,我看到AssignedUserList属性的计数为0。我可以看到视图模型中的其他属性,因此我知道表单post的内容正在工作,只是不适用于多选列表

我假设问题在于我如何尝试将多选列表与viewmodel属性关联。我已经看到很多帖子说我需要在名称中的文本后添加一个[]。(例如,在
我花了很多时间在寻找一个不走运的解决方案。任何帮助都将不胜感激。

select的发布值将始终是基本类型(字符串、int等)。因此,select multiple的发布值将只是一个可枚举的基本类型。因此,您不能直接绑定到类似于
列表
的内容。相反,您需要绑定到类型为
列表
列表
的属性(取决于您是否自定义了标识的用户PK),因为在这种情况下,它将是一个用户ID列表被发回。

感谢您清除它。将其更改为列表后,它工作了,
$('#site-form').on("submit", selectAll);

function selectAll() {
    $("#lstBox1").find("option").each(function() {
        $(this).attr('selected', true);
    });
    console.log(`SelectAll processed`);
}
[HttpPost]
public async Task<IActionResult> Edit(EditSiteViewModel editSite, string cancel)