Ich habe eine Asp.Net MVC-Anwendung geschrieben, die in einem IFrame ausgeführt wird. Wenn eine meiner Controller-Methoden RedirectToAction () zurückgibt, möchte ich, dass die URL des obersten Browsers auf die Adresse umgeleitet wird, nicht nur auf mein IFrame. Wie würde ich das machen? Da ich auf einer anderen Website laufe, muss ich eine absolute URL an den Browser übergeben, z. B. " Ссылка {Controller} / {Aktion} "
Ich denke, das entspricht dem Festlegen des Zielattributs meiner Hyperlinks auf "_top", sodass die gesamte Site umgeleitet wird (dies wird durch die Erweiterung des HtmlHelper ziemlich einfach), aber wie mache ich das für serverseitige Weiterleitungen?
Bis jetzt ist meine Lösung, OnResultExecuting zu überschreiben, die URL zu extrahieren, an die ich umleiten möchte, und dann zu einer Frame-Breaker-Ansicht umzuleiten, die die URL übergibt, an die ich ursprünglich als Parameter umleiten wollte. Die Frame-Breaker-Ansicht schreibt einfach etwas Javascript aus, das die oberste Browser-URL auf meine ursprüngliche URL setzt. Dieser Ansatz hat eine zusätzliche HTTP-Anfrage, als ich möchte, aber zumindest nicht gegen MVC-Prinzipien (ich glaube nicht!). Gedanken?
Danke
Verwenden Sie Redirect()
anstelle von RedirectToAction()
und übergeben Sie die URL.
Bearbeiten:
Ich denke, dass Sie etwas JavaScript benötigen, um aus dem IFrame auf der Client-Seite auszubrechen. Die Umleitung zu einer URL wirkt sich nur auf den aktuellen Frame aus.
Übergeben Sie Ihre URL zurück an Ihre Ansicht oder vielleicht könnten Sie Url.RouteUrl () in der Ansicht selbst verwenden.
Also zum Beispiel ...
%Vor%Dann kann Ihre Ansicht diesen Wert für eine Weiterleitung verwenden. Verwenden Sie Javascript, um festzustellen, ob ein Elternteil vorhanden ist, und legen Sie den Speicherort fest, andernfalls im aktuellen Fenster. Das folgende Beispiel verwendet RouteUrl anstelle einer stark typisierten Ansicht für einen bestimmten Controller / eine bestimmte Aktion.
Hoffe, das hilft.
%Vor%Ich würde empfehlen, den HtmlHelper zu erweitern und ihn auch in serverseitigen Weiterleitungen zu verwenden:
%Vor%Tags und Links asp.net-mvc asp.net