Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
[MVC 3]2 getrennte Templates
Stipo
myCSharp.de - Member

Avatar #avatar-2966.gif


Dabei seit:
Beiträge: 699
Herkunft: Lörrach

Themenstarter:

[MVC 3]2 getrennte Templates

beantworten | zitieren | melden

Hallo zusammen,

ich hab mir ein bisschen das ASP.NET MVC 3 Framework angesehen. So richtig fitt bin ich darin zwar noch nicht, aber ich denke, das ich mit dem Framework glücklich werden kann.

Nun stelle ich mir gerade die frage, wie ich das realisieren kann, das man 2 getrennte Templates nutzen kann? Hintergrund ist, das es ja vermehrt auch Smartphone User gibt, die Mobil Surfen. Eine angepasste Website zu erstellen ist ja nicht besonders schwer. Folgendes stelle ich mir vor, das die normale Website unter www.domain.de angezeigt werden soll. Die Mobile dann unter www.domain.de/mobil .

Ich bräuchte dann ja 2 getrennte Controller und Views. Die Model sind die selben.
Kann ich einfach ein Unterverzeichnis anlegen, und darin dann auch einen Ordner Controllers und Views anlegen? Oder wie macht man das?

Brauche nur ein paar denkanstöße in die richtige Richtung.

Danke schonmal an alle, die sich mit dem MVC besser auskennen.

Grüße Stephan
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.832

beantworten | zitieren | melden

Für jeden Controller gibt es einen Ordner unter Views, der den gleichen Namen hat.
Darunter kannst Du so viele Views anlegen wie Du willst.
* Auch unbegrenzt Controller kannst Du anlegen.
* Auch kannst Du soviel Master / Layout (Razor) Seiten anlegen wie Du willst. Sollten unter ~/Views/Shared liegen und werden dann in den einzelnen ViewSeiten (aspx/cshtml) referenziert.

Zudem gibt es bei MVC Areas, die eine weitere Kapselung von Controllern und Views ermöglichen. Schau Dir das mal an. Lohnt sich.

Wenn Du alles unter /mobil/ erreichbar machen willst, musst Du zusätzlich manuelle Routes in den <AreaName>RouteRegistration.cs jeder Area angeben -von _jedem_ Controller, _jeder_Action... empfehle ich absolut nicht.
Lieber über Subdomains (m.domain.de) oder User-Agent + Session lösen.

Gruß
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Abt am .
private Nachricht | Beiträge des Benutzers
Stipo
myCSharp.de - Member

Avatar #avatar-2966.gif


Dabei seit:
Beiträge: 699
Herkunft: Lörrach

Themenstarter:

beantworten | zitieren | melden

Hallo Abt,

jetzt hat es Klick gemacht ***Kopf an Wand hau*** . Warum bin ich nicht direkt selbst drauf gekommen.
Ich brauche ja nur einen Controller "mobil" erstellen, und hab dann die Views getrennt und kann darin wirken wie ich das will.

Mir ging es nur darum, da man ja die Grundstruktur bei den Mobilen Seiten extrem gering halten sollte, muss ich ja vom Header weg alles anpassen.

Ich werde jetzt mal meine Gedanken in ein Testprojekt packen :)
Zitat
Zudem gibt es bei MVC Areas, die eine weitere Kapselung von Controllern und Views ermöglichen. Schau Dir das mal an. Lohnt sich.
Das werde ich mir mal ansehen. Wie gesagt, ich hab bis jetzt nur mal ins MVC reingeschnuppert. So wirklich viel wissen hab ich darin noch nicht.

Danke noch, das war der Stein, der gefehlt hatte ;)

Grüße Stephan
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.832

beantworten | zitieren | melden

Ich würde keinen "Mobil" Controller erstellen - unheimlich aufwändig das zu pflegen. Du solltest nur die Views auf Mobil anpassen aber niemals die Controller.

Schau Dir das "NerdDinner Reloaded" Projekt an. Das ist ein Beispielprojekt von den Gurus / Evangelisten von MS.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Abt am .
private Nachricht | Beiträge des Benutzers
Stipo
myCSharp.de - Member

Avatar #avatar-2966.gif


Dabei seit:
Beiträge: 699
Herkunft: Lörrach

Themenstarter:

beantworten | zitieren | melden

Hallo Abt,

du meinst mit Nerddinner Reloaded sicher das Nerddinner Codeplex Projekt.
Ich hab mir den Source mal runter gezogen und auch mal die Live Seite von dem Projekt in meinem WP7 ansehen wollen. Das zeigte sich aber gleich an, wie im Browser. Ich hab aber den Punkt gefunden, warum das so ist. Das Projekt ist nur auf das iPhone optimiert worden. Gut das macht jetzt nichts, da ich denke ich mal, die entscheidenden stellen im Source gefunden habe, wie man eine Mobile taugliche Site erstellen kann.

Entscheidend ist, das man die ViewEngine anpassen muss. Dann kann man auf die Browser testen, und den Path der Views anpassen (MOBIL: /Views/Home/Mobile/Index.cshtml) (NORMAL: /Views/Home/Index.cshtml).

Was mich jetzt noch ein bisschen verwirrt hat war, das in dem Source vom Nerddinner Masterpages und *.aspx Seiten vorhanden sind.
Ich habe mir aber MVC 3 angesehen, und dort sind das ja Index.cshtml und _Layout.cshtml Dateien.
Nehme mal an, das dies mit der Einstellung zu tun hat, ob man die Razor Engine verwendet oder wie ich annehme klassiches ASPX als Engine ( Auswahl im Dialog beim anlegen einer View).

Alles in allem, hat mir der Tip mit dem Nerddinner Projekt enorm geholfen, das MVC zu verstehen.

Grüße Stephan
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.832

beantworten | zitieren | melden

Ja, es gibt ein Nerddinner Reloaded, das auf MVC3 basiert und cshtml-Files mit Razor nutzt. Kann sein, dass das mittlerweile integriert ist und nicht mehr "Reloaded" heißt.

Du kannst aspx und cshtml-Files mixen.
Ich persönlich nutze für Hauptsites immer aspx-Sites und für UserControls oder Elemente, die ich an verschiedenen Stellen nutze, die cshtml Files.
Hat den einfachen Grund, dass man im cshtml-Files auf den aktuellen RequestContext zugreifen und so zB this.User nutzen kann.
Aber das ist Geschmackssache.

Das mit dem ViewEngine ist ein neuer Weg für mich.
Finde die Variante über Subdomains für den Anwender deutlich einfacher zu unterscheiden ;-)
private Nachricht | Beiträge des Benutzers
Stipo
myCSharp.de - Member

Avatar #avatar-2966.gif


Dabei seit:
Beiträge: 699
Herkunft: Lörrach

Themenstarter:

beantworten | zitieren | melden

Zitat
Ja, es gibt ein Nerddinner Reloaded, das auf MVC3 basiert und cshtml-Files mit Razor nutzt. Kann sein, dass das mittlerweile integriert ist und nicht mehr "Reloaded" heißt.
Ich bezweifel das bei dem Source den ich geladen habe das MVC3 schon drinne ist. Der Source ist von 2010 noch.

Hab nach dem Reloaded gesucht, aber es nicht gefunden. Das einzigste was ich gefunden habe, war ein Blog Beitrag von Scott Hanselmann, aber dann noch im Context mit EF4.

Naja, auch egal. Ich habe das Konzept erkannt. Und eine reine umleitung in eine Subdomain ist wäre einfacher zu realisieren, da man dann ja nur auf Request.Browser.IsMobileDevice prüfen und muss, und ein Redirect macht.
Aber gerade, das es sich versteckt, und dann eben im Smartphone nur optimiert angezeigt wird, gefällt mir. Auch entgeht man da der Gefahr besser, das man DC baut, was Sumas nicht gerne haben :)

Grüße Stephan
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.832

beantworten | zitieren | melden

MVC 3 Sourcecode gibts unter http://nerddinner.codeplex.com/SourceControl/changeset/view/63324# Branches VS2010-MVC3

Kann aber nicht sagen, wie fertig das ist.
Aber Du weißt ja nun wie der Hase läuft ;-)
private Nachricht | Beiträge des Benutzers
Stipo
myCSharp.de - Member

Avatar #avatar-2966.gif


Dabei seit:
Beiträge: 699
Herkunft: Lörrach

Themenstarter:

beantworten | zitieren | melden

Hallo Abt,

der Source ist fast identisch. Da wurden lediglich die Views an das neue Racor angepasst.

Grüße Stephan
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.832

beantworten | zitieren | melden

Das kann gut sein; es ist einfach eine andere ViewEngine.
Aber Du hast zudem noch einen ganz anderen Context zur Verfügung.
private Nachricht | Beiträge des Benutzers