【问题标题】:Calling method in different controller using ajax not working properly使用ajax在不同控制器中调用方法无法正常工作
【发布时间】: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


【解决方案1】:

我发现了问题所在。起初我没有注意到这一点。操作方法之前放置在具有 [Authorize] 属性的控制器中,我是从未经授权的地方调用该方法的。没有抛出任何错误,所以很难找到。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 2013-01-17
    • 2013-08-02
    • 2021-05-22
    • 2013-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多