ASP.NET MVC:许多路由 - >总是只有一个控制器

时间:2011-05-03 00:51:33

标签: asp.net-mvc routing

我有一个非常简单的问题。我的网站,基于ASP.NET MVC,可以有很多网址,但所有网址都应该带到一个控制器。怎么做?

我想我在Global.asax中需要一些魔法,但我不知道如何创建将任何网址重定向到特定控制器的路由。

例如我有url / about,/ product / id等,但所有这些都应该真正带到内容/节目,其中url的部分将被识别,并决定显示哪些信息。当你无法提前定义路线时,它就像CMS一样。这些信息足够吗?

由于

2 个答案:

答案 0 :(得分:21)

这听起来像是一个可怕的想法,但是,如果你必须的话,那就好了;

routes.MapRoute(
    "ReallyBadIdea",
    "{*url}",
    new { controller = "MyFatController", action = "MySingleAction" }
    );

这会将所有内容路由到单个控制器中的单个操作。如果你想要更多的灵活性,还有{* path}和其他URL patterns

答案 1 :(得分:1)

理想情况下,您应该尝试使用您的路线,例如,如果您的网址是/ products / 42,并且您希望它转到通用控制器,则应明确指定

routes.MapRoute(
    "Poducts",
    "products/{id}",
    new { controller = "Content", action = "Show", id = UrlParameter.Optional }
    );

然后你会为/ customers / 42

之类的东西指定另一条路线
routes.MapRoute(
        "Customers",
        "customers/{id}",
        new { controller = "Content", action = "Show", id = UrlParameter.Optional }
        );

这可能看起来有点冗长,创建单一路线可能看起来更干净,但问题是单一路线是你永远不会得到404并且必须在代码中处理这些事情。