c# - 下拉更改不调用方法 asp.net mvc jquery

标签 c# jquery asp.net asp.net-mvc asp.net-mvc-4

首先,我已经使用此线程来达到我现在所在的位置,但我的情况遇到了困难。 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/

相关文章:

c# - 如何在 Unity 3D 中以统一方式或均匀地更改 Polygon Collider 2D 的大小

javascript - 为什么取消选择不适用于具有可选择和可拖动功能的多个项目

asp.net - ImageResizer AzureReader2 插件 - 对调整大小请求的 404 响应

c# - 如何在 Microsoft.Speech 中使用 DTMFRecognitionEngine 类

c# - Environment.SpecialFolder.ApplicationData 返回错误的文件夹

jquery - 以编程方式创建选择列表

javascript - 如何替换 .data javascript 函数中的逗号(使用 .replace)

asp.net - Web服务中的Response.Write()

c# - ASP.Net C# AssemblyInfo 版本不工作

c# - 如何按从上到下的设计顺序或设置顺序循环检查复选框