Tas*_*que 3 architecture ajax model-view-controller asp.net-mvc asp.net-mvc-3
对于ajax调用actionresult我想到两个选项
在第二种方法中,我可以使用单独的文件来功能划分控制器并ajaxcontroller在每个文件中使用部分类.如果有一些actionfilter属性我想要应用于除ajax动作以外的动作结果,则第二个选项可能会有用.例如,Authorize属性可以应用于正常动作结果.我可以在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);
}
Run Code Online (Sandbox Code Playgroud)
要回答您的更新
最好创建一个CustomAuthorizeAttribute检查它是ajax请求还是常规请求并进行适当的授权.您的控制器不应该知道授权的方式.