2014-10-06 8 views
0

我遇到了如主题中所述的问题。使用ajax时不同控制器中的调用方法无法正常工作

我用DROPDOWNLIST从剑道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); 
    } 

谁能告诉我这是为什么?

为了避免这个问题,我应该把我的操作方法从许多不同的视图中调用?

干杯!

编辑:

代码的下拉(置于partialView):

  @(Html.Kendo().DropDownList() 
      .Name("Group") 
      .Value(Model.Group) 
      .DataSource(source => 
      { 
       source.Read(read => 
       { 
        read.Action("GetGroups", ViewContext.RouteData.GetRequiredString("controller")); 
       }) 
       .ServerFiltering(true); 
      }) 
       ) 

就像我说这是一个工作码,因为我复制操作方法相同的控制器作为视图。问题是当我从另一个控制器获取Json数据时。

+0

什么是您的下拉菜单的代码? – 2014-10-06 10:50:38

+0

当你使用'read.Action(“GetGroups”,“Controller2”);'?使用Fiddler验证您的ajax请求。 – nZeus 2014-10-06 11:18:11

+0

一切都很好,你的行动方法。检查生成的ajax url + ajax请求 – nZeus 2014-10-06 11:20:35

回答

0

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