MVC Routing Einschränkung auf den Controller-Namen

Habe ich die Routen so eingerichtet:

        context.MapRoute(
        name: "Area",
        url: "Area/{controller}/{action}",
        defaults: new
        {
            controller = "Home",
            action = "Dashboard"
        }
        );

        context.MapRoute(
        name: "AccountArea",
        url: "Area/{accountFriendlyId}/{controller}/{action}",
        defaults: new
        {
            controller = "Home",
            action = "Dashboard",
            accountFriendlyId = RouteParameter.Optional
        }
        );

        context.MapRoute(
        name: "AccountCampaignArea",
        url: "Area/{accountFriendlyId}/{campaignFriendlyId}/{controller}/{action}",
        defaults: new
                {
                    controller = "Home", 
                    action = "Dashboard",
                    accountFriendlyId = RouteParameter.Optional,
                    campaignFriendlyId = RouteParameter.Optional
                }
        );

Und ich habe einen brennenden Wunsch zu haben Area/friendlyAccountName/Home nimm mich mit zu den Dashboard() aber das funktioniert nicht (404). Ich denke der Grund dafür ist, dass wir die Suche nach einem friendlyAccountName controller.

Wohl mit dem wissen, dass, wenn ich entscheiden sollten, um den Namen des Benutzerkontos ein, nach einem meiner Controller kommt alles zusammenbrechen, gibt es eine Möglichkeit, durch zu fallen, um die nächste route bei einem string nicht zu finden, der einen entsprechenden controller? Gibt es eine Möglichkeit zur reflektion verwenden und vermeiden Sie die Aufrechterhaltung einer Einschränkung jedes mal, wenn ich ändern Sie die Liste von meinem Controller?

BEARBEITEN

Kennen Sie einen Weg, der nicht mit der Reflexion oder zumindest enthält die abgeleiteten Typ Suche zu diesem Bereich? Ich weiß nicht, wie die Idee entstehen, dass overhead zweimal ein, wenn der zweite parameter der route entspricht eine controller-Namen (pass-Einschränkung dann wieder suchen bei der Konstruktion der controller). Ich wünschte, es war ein Weg, um die Ausnahme zu fangen an der Stelle, konstruieren einen controller und dann sichern und die durch fallen, auf die nächste route.

InformationsquelleAutor nik.shornikov | 2012-05-02

Schreibe einen Kommentar