выбрал несколько из столбца множественного выбора в файле представления после вызова функции - PullRequest
0 голосов
/ 04 марта 2019

Как передать значение из столбца множественного выбора из представления в метод Get контроллера.Я пытаюсь передать значение из dropdownDepot в список аргументов контроллера.Пожалуйста, помогите

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();
    }

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Вы можете использовать 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)
0 голосов
/ 04 марта 2019

Вы можете использовать val() непосредственно на элементе выбора, без предварительной фильтрации по выбранным параметрам.Когда вы делаете это для выбранных кратных значений, вы получаете массив выбранных значений:

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

И

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

Для правильного связывания массива вам потребуетсячтобы фактически повторить параметр department для каждого выбранного значения:

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

Для этого должно работать что-то вроде следующего:

'&department=' + $('#dropdownDepartment').val().join('&department=')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...