При выполнении запроса ajax, как я могу использовать переменную jquery в параметре url, использующем c #?

#c# #jquery #ajax #asp.net-mvc

#c# #jquery #ajax #asp.net-mvc

Вопрос:

Вот код, который у меня есть:

 var selectedFacility = $("#Facility").val();

$.ajax({
        type: "Post",
        url: "@Url.Action("GetLocations", "Item", new { Facility = "selectedFacility goes here"})",
        dataType: 'json',
        success: function (data) {
            for (var i = 0; i < data.length; i  ) {
                $('#Location').append('<option value="'   data[i].Value   '">'   data[i].Text   '</option > ');
            }
        }
    });
  

Действие контроллера:

 public JsonResult GetLocations(string facility) {
        var Locations = new List<SelectListItem>{};
        Locations.AddRange(db.Locations.Where(l => l.Facility == "LAT").ToList().Select(l => new SelectListItem {
            Text = l.Name,
            Value = l.ID.ToString()
        }));
        return Json(Locations, JsonRequestBehavior.AllowGet);
    }
  

Это строка, в которой мне нужно использовать переменную:

 new { Facility = "selectedFacility goes here"})",
  

Возможно, я упускаю что-то очевидное, но мне нужно использовать selectedFacility переменную jquery в параметрах Url.Action(). Есть ли способ, которым это можно сделать?

Комментарии:

1. можете ли вы показать свой код метода GetLocations?

Ответ №1:

Я думаю, что вы не можете использовать $("#Facility").val(); параметр в Url.Action() методе.

Вы используете http, POST я думаю, вы можете попытаться установить ajax объект данных в качестве параметра.

 var selectedFacility = $("#Facility").val();

$.ajax({
        type: "Post",
        url: '@Url.Action("GetLocations", "Item")',
        data: { Facility: selectedFacility },
        dataType: 'json',
        success: function (data) {
            for (var i = 0; i < data.length; i  ) {
                $('#Location').append('<option value="'   data[i].Value   '">'   data[i].Text   '</option > ');
            }
        }
    });
  

Комментарии:

1. Я не думаю, что это решение работает. Я только что попробовал это, но я получаю синтаксическую ошибку.

2. @sjohn285 попробуйте ‘data: { facility: selectedFacility }’