簡體   English   中英

下拉更改不調用方法 asp.net mvc jquery

[英]Dropdown change not calling method asp.net mvc jquery

首先,我已經使用這個線程來了解我現在所處的位置,但我的情況有困難。 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")';

如果您在同一視圖上執行此操作,則可以通過執行以下操作來解析 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) {

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM