Ich kam mit einem Problem, das ich nicht beheben kann.Wie wird die Seite umgeleitet, wenn der Aufruf von filterContext.Result zur Aktion in der Ajax-Methode durchgeführt wurde?
Der Kontext meines Problems basiert auf der Notwendigkeit, den Benutzer zur Anmeldung umzuleiten, wenn eine Sitzungsvariable verloren geht.
Was wir tun, ist eine Dekoration über den Controller-Aktionen, die Vorschauen die Aktion auszuführen, validieren, dass die Session-Variable namens [ „SesionesPorUsuarios“], wo verschiedene
So etwas wie dies auf null:
[HttpPost]
[IndicadorUltimaAccionDelSistema()]
public JsonResult ConsulteLosProductos(string elAliasDelTipoDeProducto)
{
//stuffs...
}
Und dann wie folgt aus:
public class IndicadorUltimaAccionDelSistema : ActionFilterAttribute
{
/stuffs...
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (HttpContext.Current.Session["SesionesPorUsuarios"] != null)
{
/stuffs...
}
else
{
/stuffs...
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary
{
{ "action", "Login" },
{ "controller", "Login" }
});
}
}
}
unsere Anmeldung Aktion ist:
public ActionResult Login()
{
return View();
}
Wir haben das Problem, wenn die Aktion in einer Ajax-Methode wie $ .post()
genannt wirdDie post-Methode erhält die alle Blick durch die Aktion „Login“ zurück, aber es nicht tun Umleitungen Wenn der Benutzer die Anmeldeseite aufruft, erhält die Post-Methode den gesamten von der Aktion "Login" zurückgegebenen HTML-Code und behandelt ihn wie ein JSON-Objekt.
Jeder weiß, wie wir dieses Problem beheben können, oder welche workarround können wir für die Notwendigkeit
Dank gilt ...
Vielen Dank für Ihren Kommentar und nehmen Sie sich Zeit, um meine Frage zu beantworten. Das Problem mit dieser Lösung ist, dass wir den gesamten Code bei jedem Post-Methoden-Aktionsaufruf ändern sollten. Wenn es keine andere Lösung gibt, werden wir so etwas anwenden, obwohl es mögliche Regressionen bedeutet. Nochmals vielen Dank für Ihre Zeit. – mmadrigal