【问题标题】:How to gain control of what is returned after a route matches?如何控制路由匹配后返回的内容?
【发布时间】:2015-01-16 01:16:17
【问题描述】:

使用 ASP.NET MVC,当路由匹配时,框架将确定 Controller 类型,然后使用 ControllerActivator 类创建它的新实例,然后执行 Action 方法,最后将结果返回给请求来电者。

只是出于好奇,如果我想在路由和控制器之间进行精确干预怎么办。假设控制器不符合我的需求。假设我只需要在一个类中执行一个随机方法并返回它的结果。

那我该怎么办?我必须覆盖什么?请问可以提供路径吗?示例代码也将不胜感激。

【问题讨论】:

  • 控制器操作“不符合您的需求”是什么意思——看起来您应该能够从内部“执行类中的随机方法并返回它的结果”控制器动作。如果您希望避免控制器操作,则不需要返回视图。
  • 是的,我知道@DavidTansey。这真的只是出于科学:)
  • 也许这听起来很愚蠢,或者“简单”的出路——不要使用控制器,它是 ASP.Net——例如“老派”通用处理程序(没有多余的 ashx)。或者去 Web API(你只是想“执行一个方法并返回一些结果”)。

标签: asp.net .net asp.net-mvc routing asp.net-mvc-routing


【解决方案1】:
  1. 创建您自己的实现 IController 工厂的控制器工厂。如下所示。

    公共类 MyControllerFactory : IControllerFactory

  2. 实现 IControllerFactory 接口

  3. 在 Global.asax Application_Start 事件中注册您的新控制器工厂。

    ControllerBuilder.Current.SetControllerFactory(typeof(MyControllerFactory));

您可以查看 DefaultControllerFactory 的代码作为实现您自己的工厂的参考。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    • 1970-01-01
    相关资源
    最近更新 更多