MVC Antwort.Redirect funktioniert nicht
Ich habe eine Methode in MVC-Controller, der aufgerufen wird href inneren Anker-tag.
public ActionResult DoSomething(string value)
{
if(true)
{
return new RedirectResult("http://google.com");
}
}
wenn ich debug und drücken Sie die Methode Response.Umleiten tut nichts, keine Ausnahmen. irgendwelche Ideen?
Vielen Dank im Voraus!
- Ich hätte wahrscheinlich erwartet, dass die funktionieren würde, aber normalerweise würden Sie verwenden Sie eine der
return Redirect
Methoden innerhalb der controller redirect aus dem controller. - Einen Fehler gefunden im browser debugger XMLHttpRequest-Objekt kann nicht geladen werden google.com. Kein "Access-Control-Allow-Origin' - header vorhanden ist, auf die angeforderte Ressource. Herkunft 'gmpmss.localhost:3333' ist daher nicht der Zugriff erlaubt.
- Das ist sehr seltsam, dass die Sicherheitsmaßnahmen Hinzugefügt, um zu verhindern, dass unautorisierte cross-site AJAX requests - nicht sicher, warum-Antwort.Leiten Sie aus der server-Seite würde dazu führen, dass!!
- es ist zu erwarten. Die Ajax-Anfrage wird umgeleitet auf Webseiten von Drittanbietern (google in diesem Fall) und bekommt fehlgeschlagen, die durch browser, da Google nicht geben-Header zu ermöglichen, ajax-Anfragen von dieser Seite. Dieser Frage fehlen einige details. Was versuchen Sie zu tun?
- Serverseitige Weiterleitungen nicht AJAX-Anfragen, aber mir ist gerade eingefallen, warum - in den debug-Modus von Visual Studio fügt eine JavaScript debug Helfer auf die Seite, die ist dann gesperrt, wenn Sie die Umleitung zu Google.
- kennen Sie einen Weg, um zu bekommen, dass?
- Ich persönlich deaktivieren der JS-debugger, die es verursacht mehr Probleme als es löst! Sie sollten aufhören, mit Antwort.Umleitung in MVC trotzdem obwohl.
- Ich bin mit VS 2013 kennen Sie eine schnelle Möglichkeit der Deaktivierung von JS-debugger?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
Redirect
Response.Redirect
ist nicht die bevorzugte Art und Weise tun Umleitungen asp.net mvcAntwort.Umleitung und ASP.NET MVC – Nicht Mischen
Update: Es scheint, dass Sie versuchen, umleiten ajax-request. Wenn Sie umleiten, ajax-request, Ihrer Hauptseite nicht umgeleitet werden.
Gibt es ein paar Dinge, die Sie tun müssen, um hier zu vermeiden, all diese Fragen.
Beginnend mit der AJAX-Fehler, die Sie bekommen, werden Sie wie die meisten beziehen sich auf den javascript-debugger, die von Microsoft als "BrowserLink".
Wenn Sie Firefox oder Chrome, diese Funktion funktioniert einfach nicht, das ist wahrscheinlich der einfachste Weg, um das Problem zu vermeiden, jedoch können Sie die Funktion deaktivieren hier:
Können Sie ändern Sie den Standard-Webbrowser, die zum ausführen der website nur auf der linken Seite.
In Bezug auf
Response.Redirect
ich denke, dass ist schon gut abgesichert sind, sollten Siereturn Redirect()
statt, jedoch Ihren code refaktorisiert werden, um zu ermöglichen, dass.Vorausgesetzt, die Methode ist eine Hilfsmethode, die erforderlich ist, um getrennt von der Steuerung selbst gibt es ein paar wesentliche Ansätze, das zu tun, was Sie versuchen zu tun.
1) Magie-Werte
Dazu gehören "
redirect1
" oder auch allgemeinnull
, und würde so Aussehen:2) Griff über Ausnahmen
Vorausgesetzt, das problem ist, dass die Daten in irgendeiner Weise schlecht, und Sie umleiten wollen Weg, weil Sie Sie nicht verarbeiten, Exception handling ist wahrscheinlich der Weg zu gehen. Es ermöglicht auch unterschiedliche Arten von Ausnahmen ausgelöst werden durch eine einzelne Methode und unabhängig voneinander behandelt werden, ohne Magie-Werte, die dann nicht verwendet werden, als normale Daten.
Durch diesen Ansatz verwenden, können Sie effektiv zusätzliche Rückkehr Staaten zu Methoden, die zimmerreserviereung, ohne das hantieren mit Ihrer Rückkehr geben Sie oder erstellen Sie Lasten der Magie Werte.
Nicht verwenden
throw Exception
- verwenden Sie entweder eine der spezifischen ArtenArgumentException
undArgumentNullException
wird wahrscheinlich in handliches kommen, oder erstellen Sie Ihre eigenen Arten, wenn es sein muss.Finden Sie Informationen zum erstellen eigener Exception-Typen, die hier einfach genug.