在我的MVC 4应用程序控制器端如何使用!IsPostback用于检查是否检查UserId管理会话。如下代码:
if (!IsPostback)
{
if (Session["UserId"] != null)
{
return RedirectToAction("Users", "UsersList");
}
else
{
return RedirectToAction("Index", "Index");
}
}
任何人都有想法。谢谢提前
答案 0 :(得分:1)
你可以查看url referer是否与当前页面相同
private bool IsPostBack()
{
bool isPost = string.Compare(Request.HttpMethod, "POST",
StringComparison.CurrentCultureIgnoreCase) == 0;
if (Request.UrlReferrer == null) return false;
bool isCurrentUrl = string.Compare(Request.Url.AbsolutePath,
Request.UrlReferrer.AbsolutePath,
StringComparison.CurrentCultureIgnoreCase) == 0;
return isPost && isCurrentUrl;
}
答案 1 :(得分:0)
这样做的正确方法是通过添加不同的http方法属性将代码分成两个不同的函数。
例如,这相当于!IsPostback :
[HttpGet]
public ActionResult Login()
{
if (Session["UserId"] != null)
{
return RedirectToAction("Users", "UsersList");
}
else
{
return RedirectToAction("Index", "Index");
}
}
在ASP.NET Web窗体中 IsPostback 返回true,如果http方法是 POST 。
所以!IsPostBack 用于检查请求方法是否为 GET (但这种技术在Web Forms中使用而不是在MVC中)。