我有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() })
});
答案 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() })
});