下拉列表更改不调用方法 asp.net mvc jquery

本文关键字:asp net mvc jquery 方法 调用 下拉列表 | 更新日期: 2023-09-27 17:56:19

首先,我已经使用这个线程来达到我现在的位置,但我的情况遇到了困难。 ASP.NET MVC 3 下拉列表已选择索引已更改

我希望从一个下拉列表中选择一个值,然后减少其下方下拉列表中的可用选项。

与上面的线程类似,我正在尝试使用 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));
            });
        });
    });

以下是可用性控制器中的 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"或类似的东西。

我不确定为什么它至少没有做一些事情,因为我已经使其尽可能与正常工作的原始线程相似。

提前感谢!

下拉列表更改不调用方法 asp.net mvc jquery

对我来说,

这一行是问题所在:

var queryLink = 'Url.Action("GetBuildings")';

如果你在同一视图上这样做,你可以通过这样做来解析asp标记(注意@):

var queryLink = '@Url.Action("GetBuildings")';

但我不建议使用这种方法,你比使用 html5 数据属性更干净

编辑:使用数据属性示例。向下拉元素添加一个属性,例如:

<select id="Park" data-action-url='@Url.Action("GetBuildings")'>

在你的JS上,你会得到网址:

var queryLink = $(this).attr('data-action-url');

您还可以使用 $.get 数据参数将参数添加到 url:

$.get(queryLink, {parkID : $(this).val()}, function (data) {