繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM