2016-03-28 24 views
1

在我的MVC 4應用程序控制器端如何使用!的IsPostBack檢查檢查用戶ID奶源會話與否。如下面的代碼:如何使用!的IsPostBack在MVC 4控制器側

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

任何一個有idea.Thanks推進

回答

1

您可以檢查URL引用者如果是相同的當前頁面的或不

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; 
    } 
+0

#Fedri Qrueger其實我的動機登錄後第一次用戶登錄成功我存儲他/她的用戶ID到會議再經過任何頁面直接在會話從我的應用程序IM檢查有用戶id管理會話或無法運行,如果用戶ID不那麼我重定向到登錄頁面,其他明智的excution頁面,這種流動 –

+0

,那麼你可能會使用自定義驗證屬性加以考慮。 http://www.bradygaster.com/post/custom-authentication-with-mvc-3.0 並設置在網絡配置

+0

#Fedri Qrueger抱歉,這並不是一個辦法就是我確切看,還有沒有其他的方法像上面我的示例代碼類型。 –

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窗體中使用不MVC)。

相關問題