#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 }’