首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义MapRoute

自定义MapRoute
EN

Stack Overflow用户
提问于 2012-05-23 15:53:52
回答 1查看 16.9K关注 0票数 8

我试图创建一些自定义的地图路线,但无法使它很好地工作。

我的最终目标是能够指定如下内容。从本质上说,我的URL是用"id“和"name”的值对构造的。这个名字是不相关的,而且仅仅是为了用户的方便,我将在我的控制器中要求ID。

/dashboards/5-My-Estate-name/89-My-subgroup-name/133-Maybe-even-another-subgroup

首先,我正在做第一部分的工作,并且遇到了麻烦。

在使用以下路由时浏览到"http://localhost:53933/dashboards/109-building-xyz“将生成错误A public action method '109-building-xyz' was not found on controller 'MyInterfaceInterface.Controllers.DashboardsController'.

代码语言:javascript
复制
routes.MapRoute(
  "Dashboard",
  "dashboards/{id}-{name}", // URL pattern
   new { controller = "Dashboards", action = "Index" },
   new { id = @"\d+", name = UrlParameter.Optional }
);

显然,我希望将它路由到带有参数的Index函数中。

我做错了什么?我的结构正确吗?我来自一个web-PHP背景,并使用htaccess来实现这样的目标。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-23 16:10:13

路线的顺序很重要。MVC将使用与URL模式匹配的模式来匹配第一个声明的路由。

所以如果你有这个

代码语言:javascript
复制
routes.MapRoute(
  "Default",
  "{controller}/{action}/{id}", // URL pattern
   new { controller = "Home", action = "Index" },
   new { id = UrlParameter.Optional }
);
routes.MapRoute(
  "Dashboard",
  "dashboards/{id}-{name}", // URL pattern
   new { controller = "Dashboards", action = "Index" },
   new { id = @"\d+", name = UrlParameter.Optional }
);

然后,http://localhost:53933/dashboards/109-building-xyz将与控制器匹配“仪表板”,并将“109-build-xyz”与操作匹配。

您需要始终先声明最具体的路由,然后再声明更一般的路由,如下所示:

代码语言:javascript
复制
routes.MapRoute(
  "Dashboard",
  "dashboards/{id}-{name}", // URL pattern
   new { controller = "Dashboards", action = "Index" },
   new { id = @"\d+", name = UrlParameter.Optional }
);
routes.MapRoute(
  "Default",
  "{controller}/{action}/{id}", // URL pattern
   new { controller = "Home", action = "Index" },
   new { id = UrlParameter.Optional }
);

然而,莫滕·默特纳的评论是正确的--我认为你不可能有两个不被正切斜线分隔的路径参数。为了将URL模式与默认的路由引擎一起使用,您需要将URL模式更改为如下所示:

代码语言:javascript
复制
"dashboards/{id}/{name}"
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10723628

复制
相关文章

相似问题

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