Как получить выбранное значение из нескольких выпадающих списков в MVC C #? - PullRequest
0 голосов
/ 14 мая 2018

У меня есть 2 выпадающих списка, где я хочу получить раскрывающееся значение при изменении в моем контроллере. Если я выберу значение из m.Cntry, то m.Yr будет нулевым, и наоборот.

Если какой-либо параметр выбран из первого раскрывающегося списка, а затем, если какой-либо параметр выбран из второго раскрывающегося списка, я хочу значение обоих string cntry,string yr.

View

@Html.DropDownListFor(m => m.Cntry, new List<SelectListItem>
                        {
                            new SelectListItem {Value = "C1", Text = "Chile"},
                            new SelectListItem {Value = "F1", Text = "France" },
                            new SelectListItem {Value = "G1", Text = "Germany" },
                          },
                             new {@class = "form-control"})


@Html.DropDownListFor(m => m.Yr, new List<SelectListItem>
                      {
                        new SelectListItem {Value = N1, Text="New" },
                        new SelectListItem {Value = P1, Text = "Previous"},
                        new SelectListItem {Value = L1, Text = "Last" },
                      },
                             new { @class = "form-control"})
<div id="container"></div>

Контроллер

public ActionResult All(string cntry,string yr)
{
    Details details = new Details();
    var model = new ClsS();
    if(cntry==null)
    {
        cntry = "C1";
    }
    else
    {
        yr = "N1";
    }

    var aa = details.Ra(cntry, yr);
    return View(aa, model);
}

Скрипт для получения значения изменения из выпадающего списка

$('#Cntry').change(function () {
    var url = '@Url.Action("All")'
    $('#container').load(url, { cntry: $('#Cntry').val() })
 });


 $('#Yr').change(function () {
    var url = '@Url.Action("All")'
    $('#container').load(url, { yr: $('#Yr').val() })
 });

1 Ответ

0 голосов
/ 14 мая 2018

Вы передаете только одно значение в каждом скрипте.Чтобы передать значения обеих выбранных опций, вам может понадобиться

$('#container').load(url, { cntry: $('#Cntry').val(), yr: $('#Yr').val() })

. Вы также можете сделать это, используя только один скрипт

var container = $('#container'); // cache it
$('#Cntry, #Yr').change(function () {
    container.load(url, { cntry: $('#Cntry').val(), yr: $('#Yr').val() })
});

Однако вы делаете ненужные вызовы ajax(если пользователь хочет отфильтровать, скажем, «Франция» и «Последний», то вызов ajax будет сделан, как только будет выбрана «Франция»), и он покажет результаты для «Новый», когда пользователь этого не хочет -раздражающий пользовательский опыт и пустая трата ресурсов).Вместо этого используйте отдельную кнопку «Поиск», чтобы пользователь мог сделать свой выбор, а затем получить результаты.

<button type="button" id="search">Search</button>

var container = $('#container');
$('#search').click(function () {
    container.load(url, { cntry: $('#Cntry').val(), yr: $('#Yr').val() })
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...