是否有任何方法可以知道请求是使用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();
}
提前谢谢。
如果使用参数重定向,不是更容易吗?
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"];
}