首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在ASP.NET MVC中,如何从/somepage重写到/pages/showpage/somepage?

在ASP.NET MVC中,如何从/somepage重写到/pages/showpage/somepage?
EN

Stack Overflow用户
提问于 2009-11-05 00:17:15
回答 5查看 212关注 0票数 0

如何将url重写为: /SomePage to /Pages/ShowPage/SomePage?

我试过了:

代码语言:javascript
运行
复制
            routes.MapRoute("myroute", "{id}", new { controller = "Pages", action = "ShowPage" });

但它不起作用。我做错了什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-11-05 08:51:03

如果你想说“导航到/SomePage应该调用PagesController.ShowPage("SomePage")",那么你可能想要这样:

代码语言:javascript
运行
复制
// Find a method with signature PagesController.ShowPage( string param )
// and call it as PagesController.ShowPage("SomePage")
route.MapRoute(
    "MyRoute",
    "SomePage",
    new { controller = "Pages", action = "ShowPage", param = "SomePage" } );

这只会重定向确切的URL /SomePage。如果您试图说“导航到/{something}将运行PagesController.ShowPage( something )方法”,那么这是一个更困难的问题。

如果第二种情况确实是您想要的,那么您必须在大多数其他方法之后才能定义它。您需要的路由条目为:

代码语言:javascript
运行
复制
// This will call the method PagesController.ShowPage( string param )
route.MapRoute(
    "MyRoute",
    "{param}",
    new { controller = "Pages", action = "ShowPage" } );
票数 1
EN

Stack Overflow用户

发布于 2009-11-05 00:23:50

我认为这应该是:

代码语言:javascript
运行
复制
routes.MapRoute("myroute", "{controller}/{action}/{id}", new { controller = "Pages", action = "ShowPage", id = "SomePage" });
票数 0
EN

Stack Overflow用户

发布于 2009-11-05 00:54:50

这是错误的,因为我认为在您的应用程序中,有一个默认的地图路由:

代码语言:javascript
运行
复制
routes.MapRoute(
            "root",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
        );

它将查找名称与您传入的id相同的控制器,如果您删除此默认映射路由,您的映射路由将起作用。

你应该试试这个路由调试器工具,它有很大的帮助:

Debugger Tool

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1674899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档