Ich stelle gerade eine Multi-Tenancy-Webanwendung mit MVC 3 zusammen. Mindestens 30 verschiedene Websites teilen sich eine gemeinsame Codebasis und teilen sie auch ähnlich Under-the-hood-Funktionalität müssen sie deutlich anders aussehen. Daher verwende ich die URL, um Clients intern zu trennen, und eine überschriebene Razor-Ansichts-Engine (um die Ansicht zu finden), um automatisch entweder eine benutzerdefinierte Ansicht für eine bestimmte Aktion oder die Standardansicht auszuwählen.Ausgewählten Ansichtspfad als HTML-Kommentar eingeben, um die Ausgabe der Aktion zu starten und zu beenden
Um eine komplexe Seite zu kompartimentieren, verwendet eine bestimmte Ansicht mehrere Teiltabellen, die normalerweise als eigenständige Aktionen gerendert werden, sodass eine benutzerdefinierte Ansicht oder Teilansicht im Allgemeinen nur kleine HTML-Unterschiede aufweist beliebiger Code, der für die Site eines Kunden spezifisch ist.
Ich hoffe, Sie sind diesem Hintergrund gefolgt!
Eine HTML-Seite könnte also aus vielen kleinen Teilen von HTML-Teilansichten bestehen, die aus bestimmten Ordnern für den Client stammen könnten, oder aus einer allgemeinen Version. Ich hoffe, es unserem Designer leichter zu machen, kleinere Änderungen an einer Seite vorzunehmen, indem wo in der Ordnerstruktur das bisschen HTML angezeigt wird, das er ändern möchte.
Mein Vorschlag ist dann, dass jeder Teil mit HTML-Kommentaren wie ‚eingeklammert‘ wird: nur
{Inhalt des Teils}
Offensichtlich ich diese manuell setzen könnte, aber das ist nach Problemen fragen, nach Tippfehlern, nach kopierten und dann geänderten Clientversionen, die nicht mit der richtigen URL aktualisiert werden. Es sollte möglich sein, dies aus irgendeinem Kontext zu bekommen und es zu injizieren, denke ich.
Gleichzeitig muss ich dies für bestimmte Aktionen nicht tun können. Zum Beispiel könnte ein Teil Text in einem Textarea erzeugen, sagen wir, so dass die Kommentare dort nicht angebracht wären. Im Großen und Ganzen bin ich glücklich, diese Kommentare in setzen, es sei denn Ich gebe an, dass es nicht angemessen ist.
Für mich schlägt dies einen ActionFilter auf einer Aktion vor, die ich Site-weit anwenden kann und dann für bestimmte Aktionen ausschalte. Ich hoffe, dass mich eines der überstürzbaren Ereignisse diesen Weg ermitteln lässt, aber ich kann nirgends finden, wo er gespeichert ist. Darüber hinaus scheint OnResultExecuting ausgelöst zu werden, bevor Partial ausgewählt wurde, und OnResultExecuted scheint den Inhalt von Partial bereits ausgeschrieben zu haben, weshalb ich den Anfangskommentar hier nicht einfügen kann. Ich kann auch keinen Bezug zum Pfad des ausgewählten Teils finden.
Nur der Vollständigkeit halber ist es meine Absicht, dass dieses Attribut nur diese Kommentare schreiben würde, wenn im Debug-Modus kompiliert.
Also weiß jemand, wie ich den Pfad zu der ausgewählten Ansicht ohne jede Art von Hack zwischen FindPartialView und dem Attribut erhalten könnte? Ist meine Attributmethode die beste Wahl oder gibt es einen einfacheren Weg dazu? Vielleicht ist schon etwas eingebaut!
Vielen Dank für Ihre Hilfe.