单独的用于ajax动作的控制器在asp.net mvc 3中产生

问题描述

| 对于ajax调用actionresult,我正在考虑两种选择 将动作结果放入 最适合其功能的控制器 为ajax调用创建单独的控制器 在第二种方法中,我可以使用单独的文件功能上划分控制器,并在每个文件中使用部分“ 0”类。 如果我想将某些动作过滤器属性应用于ajax动作结果以外的第二个选项,那么第二个选项可能会有所帮助。例如,授权属性可以应用于正常动作结果。我可能会在ajax actionresults上使用Ajaxonly属性来保护它们 您更喜欢哪个选项     

解决方法

        你为什么要这么做?对我来说,控制器与某种模型联系在一起,而不是某种类型的输出格式。
public ActionResult Users()
{
    var users = _repository.Find(); 
    var viewModel  = Mapper.Map(users); // automapper or similar
    return Request.IsAjax() ? Json(viewModel) : View(viewModel);
}
回答您的更新 最好创建一个“ 2”来检查它是ajax请求还是常规请求并进行适当的授权。您的控制器不应该知道如何进行授权。