Question

J'essaie le routage ASP.NET MVC et suis bien sûr tombé sur un problème. J'ai une section, / Admin / Pages /, et cela est également accessible via / Pages /, ce qui ne devrait pas. Que pourrais-je manquer?

Le code de routage dans global.asax:

public static void RegisterRoutes(RouteCollection routes)
{
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.MapRoute(
            "Pages",    // Route name
            "Admin/Pages/{action}/{id}",  // URL with parameters
            // Parameter defaults
            new { controller = "Pages", action = "Index", id = "" }  
        );

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

    }

Merci!

Était-ce utile?

La solution

Je suggérerais d'ajouter un itinéraire explicite pour / Pages / au début.

Le problème est qu'il est géré par la route par défaut et en dérive:

controller = " Pages " action = " Index " id = ""

qui sont exactement les mêmes que les paramètres de votre route d'administration.

Autres conseils

Pour des problèmes de routage comme celui-ci, vous devriez essayer mon Route. Débogueur assemblage (à utiliser uniquement lors des tests). Cela peut aider à comprendre ces types de problèmes.

P.S. Si vous essayez de sécuriser le contrôleur Pages, veillez à utiliser l'attribut [Autoriser]. Ne vous fiez pas uniquement à l'autorisation d'URL.

Vous pouvez ajouter une contrainte à la règle par défaut afin que la balise {Controller} ne puisse pas être "Pages".

Vous avez en premier votre route {action} jeton / paramètre qui entre en conflit avec la définition de l'action par défaut. Essayez de changer le nom du paramètre sur votre route ou de supprimer le nom de l'action par défaut.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top