2 Stimmen

Website in einer Website mit ASP.NET MVC

Ich habe nach einer Antwort gesucht und bin nur auf zwei Möglichkeiten gestoßen, von denen ich keine besonders begeistert bin.

Ich habe eine vorhandene ASP.NET MVC-Anwendung, zu der wir ein Modul hinzufügen werden. Dieses Modul könnte auch mit einem anderen Produkt geteilt werden, da es viele Gemeinsamkeiten hat. Ich möchte dieses Modul nicht für zwei separate Websites neu schreiben müssen (nur den UI-Teil). Mein erster Gedanke war daher, es als eigenständige Website zu entwickeln (da unser Produktangebot Single Sign-On unterstützt, gäbe es keine Probleme beim erneuten Einloggen auf der neuen Website). Allerdings wurde mir gesagt, dass es wie ein Teil der bestehenden Website aussehen muss, es muss innerhalb seines eigenen Tabs sitzen (die Masterseite verfügt über Tabs, um anzuzeigen, in welchem Abschnitt der Website Sie sich befinden), da es als integrierte Komponente des bestehenden Produkts vermarktet wird.

Also dachte ich darüber nach, wie man diese Website innerhalb des Tabs der bestehenden Website platzieren könnte.

Ich dachte, das Einfachste wäre einfach ein iframe. Wir haben bereits ein iframe auf einem anderen Tab (obwohl es Teil desselben Projekts ist - einige Legacy-Webformularsachen, die auf einer Drittanbietersteuerung beruhen, die mit MVC nicht kompatibel sind) und es funktioniert... bis zu einem gewissen Grad (es ist tatsächlich eine ziemlich hässliche Lösung und der Plan für die nächste Version wird sie loswerden). Das würde ich lieber nicht noch einmal machen.

Der andere Gedanke war, innerhalb des Inhaltsbereichs des Tabs einfach ein div zu haben, das ich durch AJAX-Aufrufe ersetzen kann, während der Benutzer durch die Funktionsweise dieses neuen Moduls fortschreitet, sodass alles wie eine nahtlose Website aussieht. Auch das erfüllt mich mit Dread, da ich nicht glaube, dass es sehr gut funktionieren wird... und sicherlich würden wir in Bereichen wie Google Analytics (wir würden entweder komplett verlieren oder wir müssten Teile manuell erstellen) und das Zulassen von Benutzern, Seiten zu bookmarken (die einzige URL, die sie sehen würden, ist die erste, wenn sie den Tab öffnen, da alles danach aus AJAX-Aufrufen besteht).

Hat jemand Vorschläge, wie man dies weiterverfolgen kann? Gibt es eine Möglichkeit, dass die erste ASP.NET MVC-Anwendung die Masterpages liefert, die die zweite nutzen wird? Oder gibt es einen ähnlichen Mechanismus, umgekehrt, bei dem ich die erste ASP.NET MVC-Anwendung dazu bringen kann, die zweite als Anbieter von Inhalten in die Masterpages der ersten zu integrieren?

Oder sind meine realistischen Optionen IFrame oder AJAX-Aufrufe?

1voto

Diego C. Punkte 2261

Colin,

Ich habe ein sehr ähnliches Anliegen wie du, mit dem zusätzlichen Bedarf, beide Websites im gleichen Anwendungspool auszuführen. Tatsächlich konnte ich ein Proof of Concept unter Verwendung von portable areas erstellen. Nicht besonders elegant, aber ich glaube, es wird seinen Zweck erfüllen.

Bitte lass mich wissen, falls du einen besseren Weg findest.

0voto

StanK Punkte 4690

Eine weitere Möglichkeit wäre es, den Controller und die Logik für das gemeinsame Modul in einer eigenen Bibliothek zu erstellen. ASP.Net MVC-Anwendungen können problemlos Controller in separaten Bibliotheken verarbeiten.

Der Nachteil ist, dass jede Anwendung, die dieses 'gemeinsame' Modul verwendet, eigene Ansichten haben muss, was bedeutet, dass Sie die Ansichten duplizieren und separat warten müssen, aber zumindest duplizieren Sie nicht die Controller-Logik.

Dies ist das, was ich in einem ähnlichen Szenario gemacht habe. Ich habe versucht, einige kompilierte Ansichten in die 'gemeinsame Bibliothek' einzuschließen, wie in diesem Beispiel beschrieben, aber weil Sie Scripts und Bilder wirklich nicht einbeziehen konnten, schien es nicht den Aufwand wert zu sein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X