【问题标题】:Routing Undefined Controllers路由未定义的控制器
【发布时间】:2012-03-31 00:30:08
【问题描述】:

您将如何在 ASP.NET MVC 中设置路由,以便将具有未定义控制器的路径路由到特定控制器。

例如,我有一个 UserController,所以我希望 http://example.com/user 路由到 UserController,但我希望 http://example.com/supercoolproject 路由到 ProjectController 以便找到 Super Cool Project 项

【问题讨论】:

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


    【解决方案1】:

    我相信你不应该使用http://example.com/supercoolproject 地址。相反,它应该是http://example.com/project/supercool,但是如果你想使用http://example.com/{projectname}项目格式的地址,你可以在global.asax中这样定义规则:

    routes.MapRoute(
        "ProductByNameRule",
        "{projectName}project",
        new { controller = "Project", action = "ByName" }
    );
    

    并且拥有

    public ActionResult ByName(string projectName) {
    }
    

    ProjectController

    【讨论】:

    • 不幸的是,这不是我理想的解决方案,但暂时可行
    【解决方案2】:

    您可以创建一个自定义控制器工厂来执行此操作。

    http://keyvan.io/custom-controller-factory-in-asp-net-mvc

    在自定义控制器工厂的 IControllerFactory 实现的 CreateController 方法中,首先尝试使用 DefaultControllerFactory 创建控制器,然后如果失败,则创建一个备用控制器的实例并返回它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-09
      • 2016-07-04
      • 2022-10-14
      • 2011-11-24
      • 1970-01-01
      • 2013-08-23
      • 2017-02-22
      • 2021-12-07
      相关资源
      最近更新 更多