【问题标题】:separate controller for ajax actionresults in asp.net mvc 3在 asp.net mvc 3 中用于 ajax actionresults 的单独控制器
【发布时间】:2011-09-13 17:42:45
【问题描述】:

对于 ajax 调用 actionresult 我正在考虑两个选项

  1. 将操作结果放入 最适合其功能的控制器
  2. 为 ajax 调用制作单独的控制器

在第二种方法中,我可以使用单独的文件在功能上划分控制器并在每个文件中使用部分 ajaxcontroller 类。 如果我想在 ajax actionresults 以外的 actionresults 上应用一些 actionfilter 属性,则第二个选项可能会有所帮助,例如 Authorize 属性可以应用于正常的操作结果。我可以在 ajax actionresults 上使用 Ajaxonly 属性来保护它们
你更喜欢哪个选项

【问题讨论】:

    标签: asp.net-mvc ajax model-view-controller asp.net-mvc-3 architecture


    【解决方案1】:

    你为什么要这样做?对我来说,控制器与特定模型相关联,而不是特定类型的输出格式。

    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 需要这些属性。
    • 用具体的例子更新你的问题,让我给出更准确的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 2023-03-28
    • 2016-10-10
    • 1970-01-01
    • 2013-04-17
    • 2015-05-26
    相关资源
    最近更新 更多