ASP.NET MVC 3中针对Ajax ActionResults的单独控制器

3

对于ajax调用的actionresult,我考虑了两种选项

  1. 将actionresults放置在最适合其功能的控制器中
  2. 为ajax调用创建一个单独的控制器

在第二种方法中,我可以使用单独的文件来功能性地分割控制器,并在每个文件中使用部分ajaxcontroller类。 如果除了ajax actionresults之外还有一些actionfilter属性要应用于actionresults,例如Authorize属性可能会应用于普通action result。我可以在ajax actionresults上使用 Ajaxonly属性来保护它们。
你更喜欢哪个选项?

1个回答

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请求还是常规请求,并进行适当的授权。您的控制器不应该知道授权是如何进行的。


我的所有控制器都继承自基础控制器,其中有一些属性被应用于它。这些属性在ajax上是必需的。 - Tassadaque
请在您的问题中提供具体示例,以便我能够给出更准确的答案。 - jgauffin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接