这是创建项目时提供的默认路径 -
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 });
如何修改它以便在请求/关于时显示页面?
答案 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”