2012-11-07 66 views
0

我有以下登錄動作 [HttpPost]如何在MVC3中傳遞返回URL?

 public ActionResult LogOn(LogOnModel user, string returnUrl) 
     { 
    if (!String.IsNullOrEmpty(returnUrl)) 
           { 
        return Redirect(returnUrl); 
       } 
       else 
       { 
        return RedirectToAction("Index", "Home"); 
       } 
} 

在這我RETURNURL爲空.. 任何機構可以告訴我。爲什麼我的返回URL爲null

+1

不知道,因爲你不顯示你的HTML標記調用它。 –

回答

1

這取決於您如何調用控制器操作方法。

  1. 如果你有一個像下面的網址 http://www.somedomain.com/LogOn/LogOn?returnUrl=user/userList

    在這個調用,你returnUrl參數的ActionMethodLogOnquerystring參數returnUrl如果您使用更換。

  2. form authentication,有一個驗證認證的[Authorize]屬性。如果用戶沒有通過認證,那麼它將重定向到LogIn pag e與querystring parameter returnUrl其中將有一個請求的網頁網址。

在這一刻,你還會在控制器的動作方法參數得到returnUrl值與returnUrl放慢參數與價值,這將有requested page Url

希望這有助於!

+0

我沒有你所提到的任何URL。如何識別查詢參數 – Prakash

+0

@Prakash見,Asp.Net MVC使用自動模式結合,這意味着,無論你在你的查詢字符串參數有,它會自動映射到你的模型。如果URL中沒有這樣的參數,則在這種情況下,您將始終得到NULL,因爲您在querystring中沒有returnUrl參數。合理??請讓我知道。 – nunu

+0

我是新開發人員。那我問這個問題..... – Prakash

0

這要看是誰打來的此方法以及此參數是否在POST請求中提供。

例如,如果用戶試圖訪問飾有[Autorize]屬性的控制器操作和他沒有被認證的框架會自動重定向到LogOn動作和供給(呈現的形式,而不是一個與[HttpPost]所述一個)參數returnUrl

然後,您可以在登錄表單中有一個隱藏字段來保存其值,以便當用戶輸入他的憑據並將表單提交到LogOn操作時,如果登錄成功,他將被重定向到最初請求的頁面。