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