2

我有以下路线:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(null,"Conference/{shortName}/Submission/{submission}/{action}", new { controller = "Conference", action = "Show" });
routes.MapRoute(null,"Conference/{shortName}/{action}",new { controller = "Conference", action = "Index" });
routes.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
        );

以下(希望是显而易见的)链接都有效:

  • /会议/testconf
  • /会议/testconf/ShowSubmissions
  • /会议/testconf/提交/firstSub
  • /Conference/testconf/Submission/firstSub/EditSubmission

当我现在处于 Submission/firstSub 并像这样创建一个 ActionLink

@Html.ActionLink("Show Submissions", "ShowSubmissions", "Conference", new { shortName = Model.confereceShortName },null)

它创建以下链接

  • /Conference/testconf/Submission/firstSub/ShowSubmissions

我怎样才能让 actionlink 忘记 Submission/firstSub 而不在那里硬编码?

4

2 回答 2

1

你在哪里有占位符{controller}

默认路由应类似于以下示例。

 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{*id}", // URL with parameters
                new {controller = "Home", action = "Index", id = UrlParameter.Optional} // Parameter defaults
                );

还要尝试删除第一条路线中的 /Submission/ 部分。关于自定义路线创建和排序的帖子链接:

1)创建自定义路由 (C#)

2) ASP .NET MVC 的自定义路由

3)官方来源来自asp.net mvc

于 2012-06-19T11:21:33.713 回答
1

有时搜索 30 分钟是不够的,你必须搜索 2 小时...

ASP.NET MVC 2 RC2 Routing - 使用 ActionLink 引用更高级别时如何清除低级值?

Routlink 或删除约束中的值。对我来说,Routelink 完成了这项工作。

虽然谢谢

叶柳苏波夫和阿列克谢

于 2012-06-20T07:21:01.857 回答