是否有任何方法可以知道请求是使用ASP.NET MVC中的Redirect()方法发出的

本文关键字:方法 中的 Redirect MVC NET ASP 任何 是否 请求 | 更新日期: 2023-09-27 18:28:19

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

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

提前谢谢。

是否有任何方法可以知道请求是使用ASP.NET MVC中的Redirect()方法发出的

如果使用参数重定向,不是更容易吗?

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

不添加额外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"];
    }