对于ajax调用actionresult我正在考虑两个选项
在第二种方法中,我可以使用单独的文件来功能划分控制器,并在每个文件中使用部分ajaxcontroller
类。
如果有一些actionfilter属性我想要应用于除ajax动作以外的动作结果,则第二个选项可能会有用。例如,Authorize属性可以应用于正常动作结果。我可以在ajax actionresults上使用Ajaxonly属性来保护它们
您更喜欢哪个选项
答案 0 :(得分: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请求还是常规请求,并进行适当的授权。您的控制器不应该知道授权的方式。