Вызов метода в другом контроллере с использованием ajax не работает должным образом
Я столкнулся с проблемой, как описано в теме.
Я использую dropDownList из Kendo UI
http://demos.telerik.com/aspnet-mvc/dropdownlist/serverfiltering
который соединяется с источником данных (данными из базы данных) с помощью Ajax.
Теперь dropdownList получает данные без проблем, если я помещаю метод в тот же контроллер, что и представление. Но сначала он был помещен в другой контроллер, и я получал данные, только если я инициализировал этот контроллер в другом представлении.
Вот метод:
public ActionResult GetGroups()
{
var list = new List<string>();
foreach (var item in _repositorySpisGrup.Select())
{
list.Add(item.Nazwa);
}
return Json(list, JsonRequestBehavior.AllowGet);
}
Кто-нибудь может сказать мне, почему это так?
И чтобы избежать этой проблемы, куда я должен поместить свой метод действия, который может вызываться из разных точек зрения?
Ура!
РЕДАКТИРОВАТЬ:
Код для раскрывающегося списка (размещен в partView):
@(Html.Kendo().DropDownList()
.Name("Group")
.Value(Model.Group)
.DataSource(source =>
{
source.Read(read =>
{
read.Action("GetGroups", ViewContext.RouteData.GetRequiredString("controller"));
})
.ServerFiltering(true);
})
)
Как я уже сказал, это рабочий код, потому что я скопировал метод Action на тот же контроллер, что и представление. Проблема в том, что я беру данные Json с другого контроллера.
1 ответ
Я понял, в чем проблема. Сначала я этого не заметил. Метод действия был помещен ранее в контроллер с атрибутом [Authorize], и я вызывал метод из места, где я не был авторизован. Не было выдано никакой ошибки, так что это было довольно трудно найти.