如何使用!IsPostback在MVC 4控制器端

时间:2016-03-28 10:51:26

标签: asp.net-mvc asp.net-mvc-4 session session-state

在我的MVC 4应用程序控制器端如何使用!IsPostback用于检查是否检查UserId管理会话。如下代码:

        if (!IsPostback)
        {
            if (Session["UserId"] != null)
            {
                return RedirectToAction("Users", "UsersList");
            }
            else
            {
                return RedirectToAction("Index", "Index");
            }
        }

任何人都有想法。谢谢提前

2 个答案:

答案 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中)。