2012-06-19 60 views
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
  • /Conference/testconf/ShowSubmissions
  • /Conference/testconf/Submission/firstSub
  • /Conference/testconf/Submission/firstSub/EditSubm ission

当我现在在提交/ firstSub,创建这样

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

一个ActionLink的它会创建下列链接

  • /会议/ testconf /提交/ firstSub/ShowSubmissions

我该如何让行动链接忘记提交/ firstSub没有硬编码它回覆?

回答

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 
       ); 

还尝试删除您的第一条路线/提交/部分。 链接定制路线的创建和排序的帖子:

1)Creating Custom Routes (C#)

2)Custom routing for ASP .NET MVC

3)official source from asp.net mvc

+0

我的两个途径是忽略和您发布的默认路由,应该提到,之间。我只想让会议控制器处理这两个请求。链接应该看起来像/ Conference/confID/Submission/subID或/ Conference/confID。 链接正在工作,我只想要从/ conf/confid/sub/subid到/ conf/confid的“后退”按钮。 – Vulcano

+0

如上所述,尝试重新选择可能确实有所帮助的路线。也看看我的答案,这将有助于自定义路线链接。 –

+0

重新排序我的actionLink生成以下链接/会议/ testconf /显示?提交= firstSub(导致第一个匹配现在)。关于你的链接,我已经创建了我的自定义路由,现在我的主要问题是从一个子路由到一个主路由。我也在我的问题中编辑了我的其他路线图。 – Vulcano