RedirectToAction不起作用,它会运行但不会路由到URL

时间:2017-04-06 01:33:18

标签: c# asp.net-mvc

谢谢!!

我有一个问题。

RedirectToAction不起作用,它会运行但不会路由到URL

它首先运行编辑控制器

    public ActionResult Edit(int? id)
    {
        CheckAccess();

        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }  

         .....
    }

它会在运行时访问CheckAccess()方法 return RedirectToAction(“Error”,“Index”);它运行正常,但没有路由到url,然后返回“编辑”控制器并运行下一个命令“if(id == null)。

    public ActionResult CheckAccess()
    {
        int StaffUserType = 5;
        if (Session["StaffUserType"] != null)
            StaffUserType = Convert.ToInt32(Session["StaffUserType"]);

        if (StaffUserType == 5)
        {

            //return Json(Url.Action("Index", "Error"));
            return RedirectToAction("Error", "Index");
            //return View("ErrorController/Index");

        }
        else
            return View();
        }
    }

1 个答案:

答案 0 :(得分:1)

Edit()永远不会返回RedirectToAction结果,因为不会捕获并返回CheckAccess()的返回值。

您可以修改CheckAccess()以返回bool

public bool CheckAccess()
{
    int StaffUserType = 5;
    if (Session["StaffUserType"] != null)
        StaffUserType = Convert.ToInt32(Session["StaffUserType"]);

    if (StaffUserType == 5)
    {
        return false;
    }
    else
    {
        return true;
    }
}

然后在Edit中检查此结果,如果结果为false,则返回RedirectToAction。

public ActionResult Edit(int? id)
{
    if (!CheckAccess())
    {
        return RedirectToAction("Index", "Error");
    }

    .....
}