3

对AJAX调用的ActionResult我想到的两个选项单独的控制器3

  1. 将在 控制器最适合自己的功能
  2. 的actionresults让阿贾克斯单独的控制器调用

在第二种方法中,我可以使用单独的文件在功能上划分控制器,并在每个文件中使用部分ajaxcontroller类。 如果有一些ActionFilter属性需要应用于操作结果而不是ajax操作结果,例如Authorize属性可能会应用于正常操作结果,则第二个选项可能会有所帮助。我可以在ajax actionresults上使用Ajaxonly属性来保护它们
哪个选项更适合您

回答

5

为什么要这样做?对我而言,控制器绑定到某个模型,而不是某种类型的输出格式。

public ActionResult Users() 
{ 
    var users = _repository.Find(); 
    var viewModel = Mapper.Map(users); // automapper or similar 
    return Request.IsAjax() ? Json(viewModel) : View(viewModel); 
} 

为了回答您的更新

这是更好地创建一个CustomAuthorizeAttribute来检查,如果它是一个Ajax请求或定期请求,并做适当的授权。您的控制器不应该知道授权是如何进行的。

+0

我所有的控制器都从基本控制器继承,有一些属性应用于此。 ajax需要这些属性。 – Tassadaque 2011-06-13 07:56:40

+0

更新您的问题与具体例子,让我给一个更准确的答案。 – jgauffin 2011-06-13 07:58:14

+0

问题已更新 – Tassadaque 2011-06-13 08:35:03