Динамически генерировать параметры api url в действии jquery url для заполнения выпадающего списка

У меня есть вид в моем проекте VS, который имеет три раскрывающихся списка, 2 из которых являются каскадными и должны быть заполнены при изменении родительского элемента управления. Рабочий процесс у меня отлично работает для статических URL-вызовов, но мне нужно динамически добавлять данные, и мне не повезло. Ниже приведен рабочий статический раздел кода и одна из многих моих попыток заставить его работать динамически.

При необходимости приведенная ниже примерная иерархия данных представлена ​​в порядке убывания: Элемент (например, еда), Тип (например, фрукты), Имя (например, банан).

Ценю любой вклад.

Рабочий статический код:

    function dynamicTypeList() {
       $.ajax({
           url: '@Url.Action("", "api/types/1")',

           success: function (data) {
               $("#Type_Id").empty();
               $("#Name_Id").empty();
               $("#Type_Id").append("<option value>Select Type (NEW)</option>");
               $("#Name_Id").append("<option value>Select Name (NEW)</option>");
               for (var i in data) {
                   $("#Type_Id").append("<option value='" + (i + 1) + "'>" + $(data)[i] + "</option>");
               }
           }
       });
   };

Сломанный динамический код:

    function dynamicTypeList() {
       selItem = $("#Item_Number").val();
       console.log(selItem);
       $.ajax({
           url: '@Url.Action("", "api/types/" + selItem)',

           success: function (data) {
               $("#Type_Id").empty();
               $("#Name_Id").empty();
               $("#Type_Id").append("<option value>Select Type (NEW)</option>");
               $("#Name_Id").append("<option value>Select Name (NEW)</option>");
               for (var i in data) {
                   $("#Type_Id").append("<option value='" + (i + 1) + "'>" + $(data)[i] + "</option>");
               }
           }
       });
   };

1 ответ

Решение

Предполагая, что "api" является контроллером, а "types" - действием, попробуйте заменить переменную url на:

url: '@Url.Action("types", "api")' + sellItem,

SellItem - это переменная JavaScript, которая должна полностью оставаться на клиенте. Или вы можете использовать эту технику, чтобы вы могли использовать естественную передачу параметров URL в пределах Url.Action:

Как получить доступ к переменной JavaScript в @URL.Action()

Другие вопросы по тегам