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 № 1Es 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.