Asp.Net Core Mvc3.1重定向不起作用


一、問題描述

前端妹紙使用Ajax調用后台接口,我這邊在后台會判斷用戶是否登錄,如果沒有登錄,重定向到登錄頁。

后台代碼:

    public class ActionFilter : IActionFilter
    {
        public void OnActionExecuting(ActionExecutingContext context)
        {
                context.Result = new RedirectResult("~/Login/Index");
                //context.HttpContext.Response.Redirect("~/Login/Index");
        }
    }

而這段代碼不起作用。

二、解決

為了證明自己的清白,所以自己寫了一段測試代碼去測試是否可以重定向。

@using (Html.BeginRouteForm("Areas", new { Area = "Module", Controller = "User", Action = "GetList" }, FormMethod.Get))
{
    <div><input type="submit"  value="跳轉" /></div>}
}

結果證明自己是清白的,可以跳轉到登錄頁。那么為什么前端妹紙使用ajax不能跳轉呢?那寫一段ajax調用測試一下

function aa() {
        debugger 
        $.ajax({
            url: "/Module/User/GetList",
            data: "",
            type: "GET",
            dataType: "json",
            async: false,
            cache: false,
            success: function (res) {

            },
            error: function (e) {

            }
        });

結果是不能跳轉到登錄頁

三、調用原因

查看前輩寫的代碼,他這樣寫

if (context.HttpContext.Request.IsAjaxRequest())
                            {
                                TData obj = new TData();
                                obj.Message = "抱歉,沒有權限";
                                context.Result = new JsonResult(obj);
                            }
                            else
                            {
                                context.Result = new RedirectResult("~/Home/NoPermission");
                            }

那結論就是Ajax發起請求時,重定向的工作需要前端來做;非Ajax請求時,重定向的工作后端來做。

四、遺留問題

具體Ajax請求時后端不能重定向的原因實在找不到了,這個問題先記錄吧


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM