我有一个非常简单的问题。我的网站,基于ASP.NET MVC,可以有很多网址,但所有网址都应该带到一个控制器。怎么做?
我想我在Global.asax中需要一些魔法,但我不知道如何创建将任何网址重定向到特定控制器的路由。
例如我有url / about,/ product / id等,但所有这些都应该真正带到内容/节目,其中url的部分将被识别,并决定显示哪些信息。当你无法提前定义路线时,它就像CMS一样。这些信息足够吗?
由于
答案 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并且必须在代码中处理这些事情。