小编mma*_*gal的帖子

在 ajax 方法中调用 filterContext.Result 时如何重定向页面?

我遇到了一个我不知道如何解决的问题。

我的问题的上下文是基于当会话变量丢失时需要将用户重定向到登录。

我们正在做的是对预览执行动作的控制器动作进行修饰,验证名为 ["SesionesPorUsuarios"] 的会话变量,其中与 null 不同

像这样的东西:

    [HttpPost]
    [IndicadorUltimaAccionDelSistema()]
    public JsonResult ConsulteLosProductos(string elAliasDelTipoDeProducto)
    {
        //stuffs...
    }
Run Code Online (Sandbox Code Playgroud)

然后像这样:

    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" }
                                   });
            }
        }
}
Run Code Online (Sandbox Code Playgroud)

我们的登录操作是:

public ActionResult Login()
    {
        return View();
    }
Run Code Online (Sandbox Code Playgroud)

我们遇到了问题,当在 $.post() 等 ajax 方法中调用操作时

post 方法获取“登录”操作返回的所有视图,但它不会将用户重定向到登录页面,post 方法获取“登录”操作返回的所有 html,并将其视为 JSON 对象。

在此处输入图片说明

任何人都知道我们如何解决这个问题,或者我们可以根据需要申请什么解决方法 …

javascript c# asp.net-mvc asp.net-ajax actionfilterattribute

2
推荐指数
1
解决办法
2691
查看次数