ASP.Net MVC 2路由中的硬编码URL

时间:2011-04-30 18:16:12

标签: asp.net

这是创建项目时提供的默认路径 -

routes.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional });

但是,在这里,只有当您输入http://example.com/Home/About时,才会显示关于页面。

我想在用户输入http://example.com/About

时显示about页面

如果不编写名为About?的控制器,我该怎么办?

这不起作用:

routes.MapRoute("About", "About", new { controller = "Home", action = "About", id = UrlParameter.Optional });

如何修改它以便在请求/关于时显示页面?

1 个答案:

答案 0 :(得分:0)

尝试添加此之前您的其他路线:

routes.MapRoute(
            "Home", // Route name
            "{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

请注意,“{controller} / {action} / {id}”会尝试匹配您网址的非域部分。因此,您需要尝试将所需的网址与路线匹配。

您有以下网址:

www.mydomain.com/About

如果您知道控制器必须是“主页”,则操作必须为“关于”。因此,您可以使用以下内容匹配您的路线:

www.mydomain.com/{action}

但是,需要删除域部分,因此最终会使用

{action}

然后,您需要设置默认路由值,如上例所示。现在,如果我们进入域,我们将被路由到“Home”控制器和“About”操作。如果我们访问www.mydomain.com/HelloWorld,我们将被路由到“Home”控制器和“HelloWorld”动作。我们可以像这样添加一个可选的“id”参数:

{action}/{id}

但我们需要确保将默认ID设置为UrlParameter.Optional

希望这有帮助! :)

修改

如果你想要一个特定路线的硬编码,你可以设置你需要的路线的默认路线参数,然后只使用网址的非域部分作为路线捕获。

所以,而不是“{controller} / {action} / {id}”,你会使用“OldSite / MyOldPage.aspx”