2015-04-16 163 views
0

我有一個用於管理功能的區域。我想我的網址看起來像這樣:ASP.NET MVC 4自定義路由

管理/ {控制器}/{塞} {ID}/{行動} (即管理/用戶/ getoutofmylab.1 /編輯) 管理/ {}控制器/ {動作} (即管理員/用戶,這只是用戶控制器的索引頁)

當我從我的應用程序的根目錄瀏覽到用戶控制器時,我得到admin/user。用戶控制器編輯操作的鏈接正確生成。但是,如果我通過該控制器中的任何其他操作鏈接到索引操作,則會生成如下所示的URL:admin/user/{slug}。{id},如果單擊它,將生成404找不到的錯誤。

這裏是我的AdminAreaRegisration:

public override void RegisterArea(AreaRegistrationContext context) 
    { 
     context.MapRouteLowercase(
      "Admin_Applications", 
      "admin/{controller}/{slug}.{id}/{action}", 
      new { controller = "Application", action = "Index", id = UrlParameter.Optional, slug = "" }, 
      new string[] { "Web.Portal.Areas.Admin.Controllers" } 
      ); 

     context.MapRouteLowercase(
      "Admin_default", 
      "Admin/{controller}/{action}/{id}", 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
      new string[] { "Web.Portal.Areas.Admin.Controllers" } 
      ); 
    } 

我怎樣才能達到預期的效果?

感謝

+0

所以你想從一個控制器中的動作鏈接到單獨控制器中的動作? – Mark

+0

這些都在同一個控制器中。只是當我處於「編輯」操作中時,例如,在_Layout頁面上的「索引」操作的鏈接使用slug生成,當它應該是/ admin/user時。 – getoutofmylaboratory

+0

它似乎使用Html.RouteLink並指定操作工作,而不是使用Html.ActionLink:'@ Html.RouteLink(「List Applications」,「Admin_Default」,new {action =「Index」})'' – getoutofmylaboratory

回答

0

它似乎使用Html.RouteLink並指定動作的作品,而不是使用Html.ActionLink: @ Html.RouteLink( 「列出應用程序」, 「Admin_Default」,新{行動= 「索引」} )