如何从MVC C#中的多个下拉列表中获取所选值?

时间:2018-05-13 23:48:18

标签: jquery asp.net-mvc

我有2个下拉列表,我想在控制器中获取更改的下拉值。如果我从m.Cntry中选择值,则m.Yr将为空,反之亦然。

如果从第一个下拉列表中选择了任何选项,然后如果从第二个下拉列表中选择了任何选项,那么我想要string cntry,string yr的值。

查看

@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 :(得分:1)

您只在每个脚本中传递一个值。要传递两个选定选项的值,您可能需要

$('#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调用(如果用户希望根据说&#34;法国&#34;和&#34; Last&#34;进行过滤,那么ajax调用就会立即进行#&# 34; France&#34;被选中,它将显示&#34; New&#34;当这不是用户想要的结果时 - 一个恼人的用户体验和浪费资源)。而是有一个单独的搜索&#39;按钮,以便用户可以进行选择,然后获得结果。

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

var container = $('#container');
$('#search').click(function () {
    container.load(url, { cntry: $('#Cntry').val(), yr: $('#Yr').val() })
});