Frage

Ich versuche, ASP.NET MVC Routing und haben natürlich auf ein Problem gestoßen. Ich habe einen Abschnitt, / Admin / Pages /, und dies ist auch erreichbar über / Pages /, die es nicht sollte. Was könnte ich fehlen?

Der Routing-Code in 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 = "" }  
        );

    }

Danke!

War es hilfreich?

Lösung

Ich würde vorschlagen, eine explizite Route für / Pages / Anfang hinzugefügt wird.

Das Problem ist, dass es von der Standardroute behandelt Sein und Ableitung:

controller = "Seiten" action = "Index" id = ""

das ist genau die gleiche wie die Parameter für Ihre Admin-Route.

Andere Tipps

Für Routing-Probleme wie diese, sollten Sie meinen Strecke ausprobieren Debugger Baugruppe (nur in Prüfung). Es kann helfen, diese Art von Problemen herauszufinden.

P. S. Wenn Sie versuchen, die Seiten-Controller zu sichern, stellen Sie sicher, dass die [autorisieren] Attribut zu verwenden. Verlassen Sie sich nicht nur auf die URL-Autorisierung.

Sie könnten ein Hindernis für die Standardregel hinzuzufügen, so dass der {Steuerung} Tag nicht sein kann „Seiten“.

Sie müssen Sie erste Route {Aktion} Token / Parameter, die mit der Einstellung von Standardaktion in Konflikt kommt. Versuchen Sie, Parameternamen in Ihrer Route oder Standardaktion Namen entfernen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top