这里我要查看请求类型, 如果请求来自我的应用程序中的Redirect()方法 向ViewBag添加一些消息以显示在“登录”页面上 否则不添加消息(用户直接打开登录页面)
public ActionResult Login()
{
//if(RequestIsARedirect)
//ViewBag.LoginMessage = "Please login to Continue";
return View();
}
提前致谢。
答案 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"];
}