问题描述
如何将多选择列中的值从视图传递到控制器的“获取方法”中。 我试图将值从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(); }
1楼
您可以直接在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=')
2楼
选择时,可以使用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)