【发布时间】:2014-10-06 10:25:55
【问题描述】:
我遇到了主题中描述的问题。
我使用 Kendo UI 中的 dropDownList
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);
}
谁能告诉我这是为什么?
为了避免这个问题,我应该将可能从许多不同视图调用的操作方法放在哪里?
干杯!
编辑:
下拉菜单的代码(放在部分视图中):
@(Html.Kendo().DropDownList()
.Name("Group")
.Value(Model.Group)
.DataSource(source =>
{
source.Read(read =>
{
read.Action("GetGroups", ViewContext.RouteData.GetRequiredString("controller"));
})
.ServerFiltering(true);
})
)
就像我说的那样,这是一个工作代码,因为我将 Action 方法复制到了与视图相同的控制器中。问题是当我从另一个控制器获取 Json 数据时。
【问题讨论】:
-
你的下拉菜单的代码是什么?
-
使用
read.Action("GetGroups", "Controller2");时不起作用?使用 Fiddler 验证您的 ajax 请求。 -
一切都很好,你的行动方法。查看生成的ajax url + ajax请求
-
@nZeus 嗯...我发现了问题所在。起初我没有注意到这一点。操作方法之前放置在具有 [Authorize] 属性的控制器中,我是从未经授权的地方调用该方法的。嗯..人们从错误中吸取教训。无论如何感谢您的帮助:)
-
啊,好的。我认为您应该为您的问题发布答案并将其标记为答案
标签: asp.net-mvc kendo-asp.net-mvc kendo-dropdown