/ / MVC3 Razor - Gibt es eine Möglichkeit, das Layout je nach Browseranforderung zu ändern? - asp.net-mvc, Rasierer

MVC3 Razor - Gibt es eine Möglichkeit, das Layout je nach Browseranforderung zu ändern? - asp.net-mvc, Rasierer

Ich bin diesem Tutorial mit Erfolg gefolgt: http://www.hanselman.com/blog/MixMobileWebSitesWithASPNETMVCAndTheMobileBrowserDefinitionFile.aspx

Alle Ansichten werden mit Erfolg wiedergegeben, wenn ich mit einem mobilen Gerät auf die Seite zugreife. Sie werden jedoch mit falschem Layout gerendert (AKA masterpage).

Ich habe folgende Struktur: /Views/Shared/Mobile/_Layout.cshtml /Views/Shared/_Layout.cshtml

Das Problem ist, ich muss die folgende Aussage in JEDE Ansicht setzen:

Layout = "~/Views/Shared/Mobile/_Layout.cshtml";

Gibt es einen Platz, wo ich meine Logik platzieren kann, um ein Layout auf einem anderen zu rendern?

if (normalAccess) rendert normales _Layout.cshtml else (mobileAccess) rendere /Mobile/_Layout.cshtml

Ich konnte nicht finden wo.

Danke für jede Hilfe.

Antworten:

7 für die Antwort № 1

Es gibt einen guten Artikel bei http://weblogs.asp.net/scottgu/archive/2010/10/22/asp-net-mvc-3-layouts.aspx

Sie können anscheinend eine Datei in Ihrem Views-Ordner mit dem Namen _ViewStart.cshtml erstellen, in die Sie Ihre Layout-Logik einfügen können, damit sie von allen Ansichten verwendet werden kann

Das Beispiel _ViewStart.cshtml ist einfach:

@{
Layout = "~/Views/Shared/SiteLayout.cshtml";
}

Der Artikel sagt auch: "Weil der _ViewStart.Mit cshtml können wir Code schreiben, optional können wir unsere Layout-Auswahllogik reicher machen als nur einen Grundeigenschaftensatz. Beispiel: Wir können die Layoutvorlage, die wir verwenden, abhängig vom Gerätetyp, der auf die Site zugreift, variieren - und ein für Smartphones oder Tablets optimiertes Layout für diese Geräte und ein Desktop-optimiertes Layout für PCs / Laptops haben. "

Es könnte etwas Spielzeit mit sich bringen, um das zum Laufen zu bringen, aber ich habe keine 2010er Installation, um das zu versuchen.