缩短MVC控制器路由Uri

时间:2014-09-04 23:36:58

标签: asp.net-mvc

所以我有一条默认路线:

routes.MapRoute(
    name: "Structures",
    url: "Structures/{action}/{id}",
    defaults: new { controller = "Structures", action = "Index", id = UrlParameter.Optional }
);

这很有效,正是我想要的。所以看起来我可以手动将url参数更改为我想要的任何模式。那么为什么呢,这不起作用:

routes.MapRoute(
    name: "Structures",
    url: "s/{action}/{id}",
    defaults: new { controller = "Structures", action = "Index", id = UrlParameter.Optional }
);

我知道asp.net默认路由使用{name}控制器模式并提取{name}并将其用作Url但是如果我想自定义url的部分它似乎不起作用控制器名称应该去的地方。

我觉得我的大脑在这个假期上起飞=(

1 个答案:

答案 0 :(得分:1)

您的路线将按预期工作。如果没有,它可能是由于您定义路线的顺序(顺序很重要)。来自this article

  

按照模式的顺序将传入的URL与路由模式进行比较   出现在路线词典中(这就是我们添加的路线图   在我们的RouteConfig.cs文件中。)

     

成功匹配控制器,操作和的第一个路由   动作参数指向URL中的参数或默认值   定义为路由映射的一部分将调用指定的   控制器和行动。这很重要,需要我们思考   仔细路由,以便不调用错误的处理程序   无意中。

相关问题