首先,我已经使用此线程来达到我现在所在的位置,但我的情况遇到了困难。 ASP.NET MVC 3 DropDownList selectedindexchanged
我希望从一个下拉列表中选择一个值,然后该值将减少其下方下拉列表中的可用选项。
与上面的线程类似,我尝试使用 jQuery 来完成此操作,如下所示:
$('#Park').change(function () {
var queryLink = 'Url.Action("GetBuildings")';
if ($(this).val() != '') {
queryLink += '?parkID=' + $(this).index;
}
$.get(queryLink, function (data) {
$b = $('#Building');
$op = $('<option></option>');
$b.empty();
$.each(data, function (value) {
$b.append($op.attr("value", value));
});
});
});
这是 AvailabilityController 中的 GetBuildings 函数:
public ActionResult GetBuildings(int parkID)
{
var buildQry = from b in systemDB.Buildings
where b.ParkID == parkID
orderby b.BuildingName
select b.BuildingName;
string temp = "";
foreach (string b in buildQry)
{
temp += b + ';';
}
temp = temp.Substring(0, temp.Length - 1);
string[] buildings = temp.Split(';');
return View(buildQry);
}
但是,当我更改“Park”下拉列表的值时,没有任何反应。 URL 没有变化,由于 Url.Action("GetBuildings") 我认为会附加“/GetBuildings?parkID=2”或类似的内容。
我不确定为什么它至少没有做一些事情,因为我已经使它与原始线程尽可能相似并且工作正常。
提前致谢!
最佳答案
对我来说,这一行是问题所在:
var queryLink = 'Url.Action("GetBuildings")';
如果您在同一 View 上执行此操作,则可以通过执行以下操作来解析 asp 标记(请注意 @):
var queryLink = '@Url.Action("GetBuildings")';
但我不推荐这种方法,你会比使用 html5 数据属性更干净
编辑:使用数据属性示例。 向下拉元素添加一个属性,例如:
<select id="Park" data-action-url='@Url.Action("GetBuildings")'>
在你的js上你会得到url:
var queryLink = $(this).attr('data-action-url');
您还可以使用 $.get 数据参数将参数添加到 url 中:
$.get(queryLink, {parkID : $(this).val()}, function (data) {
关于c# - 下拉更改不调用方法 asp.net mvc jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22819250/