如何在 ASP .NET MVC 5 中使用 select2 将新值动态添加到列表框并将其传递给控制器​​?

Posted

技术标签:

【中文标题】如何在 ASP .NET MVC 5 中使用 select2 将新值动态添加到列表框并将其传递给控制器​​?【英文标题】:How to dynamically add new values to a listbox using select2 in ASP .NET MVC 5 and pass it to the controller? 【发布时间】:2019-04-08 18:08:41 【问题描述】:

我正在使用 select2 'tags:true' 向现有列表框添加新值。但是我无法获得新添加的值,因为它在 HttpPost 上没有向控制器返回任何值。如何在控制器中获得这个新添加的值?

列表框代码:

@html.ListBoxFor(model => model.SelectedIds, Model.Categories, htmlAttributes: new  @class = "js-multiple"  )

脚本部分:

$(document).ready(function() 
$('.js-multiple').select2(tags:true););

Model.Categories 从数据库中获取值并填充列表框。 当我向列表框添加新值并单击提交按钮 (HttpPost) 时,没有值传递给控制器​​。我想将选定的列表项传递给控制器​​,以便将新添加的值添加到数据库中。

【问题讨论】:

我认为您需要将它们添加到实际的选择中(不是选择 2 版本),然后在添加新值后销毁并重新初始化 select2 如何将它们添加到实际选择中? 【参考方案1】:

您应该使用 ajax 获取数据并将数据设置为 select2,看这个例子:

function GetCityBranch(provinceid) 
$.ajax(
    type: 'GET',
    url: '/Suppliers/Supplier/GetCity',
    data:  "provinceid": provinceid ,
    dataType: 'json',
    success: function (data) 
        $("#BranchCityId").empty();

        array = data;
        $("#BranchCityId").select2(
            data: data
        );
    ,
    error: function () 
    
);

【讨论】:

那么使用模型属性绑定列表框不能直接实现新值的添加? 最好使用 javascript 来用新值填充下拉列表,但您可以使用部分并将下拉列表放在部分视图中而无需 select2 您可以刷新模型并仅刷新部分 感谢您的快速回复。 :)

以上是关于如何在 ASP .NET MVC 5 中使用 select2 将新值动态添加到列表框并将其传递给控制器​​?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Asp.Net mvc 5 的 grid.mvc 中添加两个按钮

如何在asp.net mvc 5身份中的授权属性中使用动态角色

如何在 ASP.NET MVC 中的 HTML-5 data-* 属性中使用破折号

如何在 ASP.NET MVC 5 中访问 AspNetUserRoles 表

如何使用 mvc 6、asp.net 5 注册全局过滤器

如何在 ASP.NET MVC 5、Entity Framework 6 中使用流利的 API 映射表?