[英]Hardcode URL in ASP.Net MVC 2 route
这是创建项目时给出的默认路由 -
routes.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional });
但是,在这里,只有当您键入http://example.com/Home/About时才会显示关于页面。
我想在用户输入 http://example.com/About时显示关于页面
如果不写一个名为 About 的 controller 怎么办?
这不起作用:
routes.MapRoute("About", "About", new { controller = "Home", action = "About", id = UrlParameter.Optional });
如何修改它以便在请求 /About 时显示关于页面?
尝试在你的其他路线之前添加这个:
routes.MapRoute(
"Home", // Route name
"{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
请记住,“{controller}/{action}/{id}”将尝试匹配 url 的非域部分。 因此,您需要尝试将您想要的 url 与路线匹配。
您有以下 url:
www.mydomain.com/About
您知道 controller 必须是“主页”并且操作必须是“关于”。 因此,您可以使用以下方式匹配您的路线:
www.mydomain.com/{action}
但是,需要删除域部分,因此您最终会得到
{action}
然后,您需要设置默认路由值,如上例所示。 现在,如果我们 go 到域,我们将被路由到“Home” controller 和“About”操作。 如果我们 go 到 www.mydomain.com/HelloWorld,我们将被路由到“Home” controller 和“HelloWorld”操作。 我们可以像这样添加一个可选的“id”参数:
{action}/{id}
但是我们需要确保默认 id 设置为 UrlParameter.Optional
希望这可以帮助: :)
编辑:
如果您想将 url 硬编码到特定路由,您可以将默认路由参数设置为您需要的路由,然后只需使用 url 的非域部分作为路由捕获。
因此,您可以使用“OldSite/MyOldPage.aspx”而不是“{controller}/{action}/{id}”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.