2012-04-07 16 views
3

Ich habe ein Problem mit html.actionlink. Ich habe zwei Routen definiert:asp.net mvc actionlink mit falscher Route

routes.MapRoute(
       "AdminDefault", 
       "Admin/{controller}/{action}/{id}", 
       new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
      ); 
routes.MapRoute(
       "Default", 
       "{controller}/{action}/{id}", 
       new { controller = "Page", action = "Details", id = "0" } 
      ); 

die Action die AdminDefault verwendet, wenn ich will es die Standard-Controller verwenden. Wie kann ich die Standardroute verwenden, ohne einen Routelink zu verwenden?

Um weitere Informationen hinzuzufügen. Ich habe eine einfache Aktion (home/index), zeigt es eine Ansicht (index.cshtml), in dieser Ansicht habe ich:

@Html.ActionLink("About", "About", "Home") 

, die eine URL erzeugt von "/ Admin/Home/Über" wenn ich will Es ist "/ Home/About" die Standardadminroute ist so, dass ich später Links erstellen kann, die für alle Verwaltungsseiten zu/admin/controller/action gehen, aber ich möchte, dass die standardmäßig generierten URLs nicht unter admin liegen.

Antwort

2

Wenn Sie Html.ActionLink aus einer Ansicht in einem Bereich verwenden, wird der Bereich standardmäßig an diesen Link übergeben.

dies außer Kraft setzen Sie sich wie so nennen Html.ActionLink können:

@Html.ActionLink("linkText", "actionName", "controllerName", new {Area = "AreaName"}, null); 

wo 'neue {Gebiet = "areaname"}' sind die Route Objektwerte und 'Null' sind die HTML-Attribute.

Sie können daher 'neu {Area = ""}'

+0

verwenden Ich verwende keine Bereiche. – Solmead

+0

Ah, ich habe es falsch verstanden. In diesem Fall müssen Sie entweder Ihre vorhandenen Regeln austauschen und dann manuell die Routen für die Admin-Seiten erstellen. Oder Sie können einen Admin-Bereich hinzufügen. –