当前位置: 代码迷 >> JavaScript >> 调用函数后,从视图文件的“多选”列中选择多个
  详细解决方案

调用函数后,从视图文件的“多选”列中选择多个

热度:104   发布时间:2023-06-07 13:43:27.0

如何将多选择列中的值从视图传递到控制器的“获取方法”中。 我试图将值从dropdownDepot传递到控制器参数List Department。 请帮忙

 public class ReportViewModel { public int DepotNo { get; set; } public List<int> Department { get; set; } } [HttpGet] public IActionResult EmployeeView(ReportViewModel report, List<int> Department,int DepotNo = 0) { List<EmployeeWorkTimeSettingsModel> log = new List<EmployeeWorkTimeSettingsModel>(); log = ReportService.GetDepotEmployeeWorkHrsReport(connectionSettings, (HttpContext.Session.GetInt32("UserID") ?? 0).ToString(), String.Join(",", report.DepotNo), String.Join(",", report.Department)); ViewBag.EmpviewReport = log; } <div class="controls col-sm-9"> <select asp-for="DepotNo" class="form-control" id="dropdownDepot" asp-items="@ViewBag.UserDepots" onchange="FillEmployee()" data-role="select"></select> <span asp-validation-for="DepotNo" class="text-danger"></span> </div> <div class="controls col-sm-9"> <select id="dropdownDepartment" class="form-control" asp-for="Department" asp-items="@ViewBag.UserDepartments" onchange="FillEmployee()" data-role="select"></select> </div> $('#dropdownDepartment').multiselect({ columns: 1, placeholder: 'Select Department', includeSelectAllOption: true, maxHeight: 300 }); function FillEmployee() { var href = '/Report/EmployeeView?depot=' + $("#dropdownDepot option:selected").val() + '&department=' + Get the Value from multiselect departments; $("#lnkFilter").attr('href', href); $("#lnkFilter").click(); } 

您可以直接在select元素上使用val() ,而不必先按选定的选项进行过滤。 当对一个选择倍数执行此操作时,您将返回一个选定值的数组:

$('#dropdownDepot').val() // single selected value

$('dropdownDepartment').val() // array of selected values

为了使数组正确绑定,您实际上需要为每个选择的值重复department参数:

&department=value1&department=value2&department=value3

诸如此类的东西应该适用于此:

'&department=' + $('#dropdownDepartment').val().join('&department=')

选择时,可以使用ajax将所有数据传递给控制器

function FillEmployee() {
   $.ajax({
         type: 'GET',
         url: '/Report/EmployeeView?DepotNo=' + $('#dropdownDepot').val() + '&department=' + $('#dropdownDepartment').val().join('&department='),

         success: function (result) {
                        console.log('Data received: ');
                        console.log(result);
                    }
      });
}

行动:

[HttpGet]
 public IActionResult EmployeeView([FromQuery]List<int> Department, [FromQuery]int DepotNo)
  相关解决方案