有没有办法知道在ASP.NET MVC中使用Redirect()方法创建了一个请求

时间:2014-10-30 07:48:56

标签: c# asp.net-mvc

这里我要查看请求类型,  如果请求来自我的应用程序中的Redirect()方法  向ViewBag添加一些消息以显示在“登录”页面上  否则不添加消息(用户直接打开登录页面)

 public ActionResult Login()
    {           
    //if(RequestIsARedirect)
        //ViewBag.LoginMessage = "Please login to Continue";
        return View();
    }

提前致谢。

2 个答案:

答案 0 :(得分:3)

如果您使用参数重定向会不会更容易?

return RedirectToAction("Login", "Account", new { returnUrl = this.Request.Url });

或者

return Redirect("/Account/Login?returnUrl=' + this.Request.Url });

然后检查returnUrl参数:

public ActionResult Login(string returnUrl)
{           
     if (!String.IsNullOrEmpty(returnUrl))
        ViewBag.Message = "Please login to continue";
}

此外,如果您使用内置的[Authorize]操作过滤器,它会在重定向时自动将returnUrl参数添加到登录URL。

请参阅MSDN

答案 1 :(得分:0)

在不添加额外url参数的情况下执行此操作的方法是使用TempData,这是存储的数据...仅用于一个请求。http://msdn.microsoft.com/en-us/library/system.web.mvc.viewpage.tempdata(v=vs.118).aspx

代码就像这样:

    public ActionResult EntryPoint()
    {
        TempData["CameFromEntryPoint"] = true;
        return Redirect("Login");
    }

    public ActionResult Login()
    {
        if(RequestIsARedirect())
            ViewBag.LoginMessage = "Please login to Continue";
        return View();
    }

    private bool RequestIsARedirect()
    {
        return TempData["CameFromEntryPoint"] != null && (bool) TempData["CameFromEntryPoint"];
    }