2009-08-14 10 views
1

Je ne sais pas si je suis juste stupide (ne répondez pas à ça!) Ou je me bats contre le routage MVC mais j'ai un autre problème.ASP.Net MVC Routing Issue..Encore

Dans mon contrôleur, je fais un RedirectToRoute ("ErrorRoute") qui rend une vue 404 qui a une MasterPage.

Dans le MasterPage j'ai une navigation supérieure qui a des liens tels que/page d'accueil et/nouvelles mais quand je suis dans la vue 404 la navigation est/error/page d'accueil et/erreur/nouvelles.

J'ai changé mon itinéraire en Global.asax de cette

routes.MapRoute(
      "ErrorRoute",      // Route name 
      "Error/Error404",    // URL with parameters 
      new { controller = "Error", action = "Error404" } 

      ); 

à cette

routes.MapRoute(
      "ErrorRoute",      // Route name 
      "Error/Error404",     // URL with parameters 
      new { controller = "Error", action = "Error404" } 
      , new { action = "Error404" } 
      ); 

pour voir si cela pouvait aider mais j'obtenir un « Pas de route dans la table de routage .. erreur lorsque j'appelle RedirectToRoute

Pourriez-vous m'aider s'il vous plaît?

Répondre

1

Vos liens ActionLinks?

Utilisez ceci:

Html.RouteLink("Link Title", new { controller="Home" action="Action" }); 

EDIT

Oh, Ajouter une nouvelle route:

routes.MapRoute(
      "homePage",      // Route name 
      "homePage/",    // URL with parameters 
      new { controller = "Home", action = "HomePage" } 
      ); 

Et répéter pour les nouvelles

AUTRE EDIT

Après avoir lu à nouveau les commentaires, si votre menu est sur chaque page, ce que vous devriez être est de créer un contrôleur de base:

public class MyBaseController : Controller 
{ 
    return ViewData["menu"] = List<MenuClass>; 
} 

Ensuite, tous vos contrôleurs (maison, erreur) héritent ceci:

public class HomeController : MyBaseController 

Ensuite, dans la page principale, boucle à travers le Viewdata [ "menu"]:

<% foreach (MenuClass in ViewData["menu"]) { %> 
<li> 
    <%=Html.RouteLink(MenuClass.LinkTitle, new { controller = "Home", action = MenuClass.Action }) %> 
</li> 
<% } %> 

note: tout cela est de SCRA tch, donc il peut y avoir des erreurs, mais c'est ce que j'ai fait sur mon dernier projet MVC.

+0

Mon menu est une extension HTMLE que j'ai écrite pour extraire les éléments de menu de la base de données, les boucle à travers eux et renvoie simplement une liste HTML non ordonnée à la page. Comment est-ce que je le modifierais pour faire ActionLink/RouteLinks et pour sortir alors la liste non ordonnée? – Jon

+0

Son ok j'ai modifié mon extension de Menu ainsi au lieu de

  • News
  • J'ai
  • + helper.RouteLink (urlTitle, nouveau {controller = "WebPage", action = "Détails", pageName = linkUrl}) +
  • . Quelle est la différence entre cette approche et l'utilisation d'ActionLink? – Jon

    +0

    ActionLink vous dirige vers une action dans le même automate (sauf si vous spécifiez le contrôleur dans les paramètres). RouteLink vous fait choisir l'itinéraire (contrôleur, action, id). – Martin

    0

    Comment ces liens sont-ils définis dans la page MasterPage? S'ils sont liés à 'news', vous devriez utiliser '/ news' et '/ homepage', sinon il l'ajoutera à l'URL actuelle (dans votre cas,/error).