Frage

Ich dachte, das recht einfach sein würde, aber ich bin total verwirrt.

Ich mag eine Controller Ansicht auf Root-Ebene der Anwendung sein, anstatt in einem Unterverzeichnis für diesen Controller, aber ich kann es nicht herausgefunden.

Ich möchte diese beiden URLs haben:

/ Info - Dies sollte Aktion "Info" auf Controller "Home"

/ Admin / - Dies sollte auf Controller "Admin" action "Index" (default) sein

Bisher egal was ich versucht habe, wird die erste Route beide am Ende zu kontrollieren. Ich kann nicht die beiden zu trennen scheinen.

Das Info-Seite nicht einmal einen Controller benötigen, ist es statisch, aber ich möchte eine Masterseite verwenden. Es kann eine viel einfachere Art und Weise, diese zu ziehen aus, aber ich habe das auch nicht herausgefunden.

Alles, was ich daran denken kann funktionieren würde, wäre ein Info-Controller zu erstellen, und Views / Home / Info zu Views / Info / Index bewegen, aber das hat einen bestimmten Geruch.

Ich konnte dies in Schienen tun mit:

  map.connect ':controller/:action/:id'
  map.connect ':action', :controller => 'home'
War es hilfreich?

Lösung

Sie müssen nur die richtige Route. In Ihrem Fall:

routes.MapRoute(
                "Info",
                "Info",
                new { controller = "Home", action = "Info" }

routes.MapRoute(
                "Admin",
                "Admin",
                new { controller = "Admin", action = "Index" }

Aber ich empfehlen Sie dieser Ansatz.

Wenn Sie Standard physischen Standort von Ansichten ändern / partialviews,
Besuche wie man benutzerdefinierte Ansicht Motoren erstellen.

Andere Tipps

Sie können mit Streckenattribute.

In der Route-Konfigurationsdatei sollten Sie haben.

        routes.MapMvcAttributeRoutes();
        AreaRegistration.RegisterAllAreas();
        //code below should already be in your route config by default
        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

Dann jede oben Aktion können Sie eine Route Attribut haben.

 [Route("info")]

Sie können sogar weiter fortgeschritten mit diesen Attributen erhalten durch Hinzufügen von Parametern und / oder Unterordner

 [Route("blog/posts/{postId}")]

Sie können die oben Attribut setzen auf jede Aktion, und es wird angezeigt, als ob es aus dem Blog-Controller stammt. Allerdings brauchen Sie nicht einmal einen Blog-Controller. Auch die {} bedeutet die Parameter, so nur sicherstellen, dass Ihre Aktion die gleichen Parameter wie unter, was in den geschweiften Klammern. In diesem Fall wäre der Parameter

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