2016-11-11 79 views
1

我現在正在開發用戶管理功能。我想補充的授權和重定向用戶到我的登錄頁面,如果他試圖在登錄前訪問這樣的用戶管理頁面:如果未登錄,將用戶重定向到另一個視圖

[HttpGet] 
public ActionResult UsersList() 
{ 
    if (Session["UserName"] == null) 
    { 
     RedirectToAction("Login", "Login"); 
    } 
    else 
    { 
     var User = new User(); 
     User.usersList = DBManager.Instance.GetUsersList(); 
     User.PreferedLanguages.Add(new SelectListItem { Text = "ENGLISH", Selected = true, Value = "ENGLISH" }); 
     User.PreferedLanguages.Add(new SelectListItem { Text = "DUTCH", Value = "DUTCH" }); 
     return View(User); 
    } 
} 

但我應該返回正確的操作結果的看法?此代碼不能編譯,我得到以下錯誤:

錯誤4「WebApplication9.Controllers.UserManagementController.UsersList()」: 不是所有的代碼路徑返回一個值> E:\工作\ WebApplication9 \控制器\ UserManagementController.cs

此時是否有可能返回另一個控制器視圖?

+3

'return RedirectToAction(「Login」,「Login」);'(你錯過了'return') –

+1

你是否正在使用所有的操作方法?你應該實現某種身份驗證(_i.e。formas authentication_)並使用'[Authorize]'屬性來爲你處理所有事情。 –

+0

@AdilMammadov:它是否適用於asp.net mvc?我是新來的。所以想到通過保持Session的用戶名來做到這一點。 – ViVi

回答

1

你應該使用下面的代碼:

return RedirectToAction("Login", "Login"); 

,而不是簡單RedirectToAction

ActionResult是一組指令,將在動作完成後由動作調用者執行。 RedirectToActionResult(返回類型RedirectToAction)包含應寫入Response以執行正確重定向的說明。

據我所知,這是動作調用的工作原理,也許官方文檔對此有另一種意見。

+0

感謝您的回覆。已經按照Stephen Muecke的評論 – ViVi

+0

@ViVi對其進行了糾正,不客氣,這很令人傷心,但我的回答稍晚於Stephen Muecke的評論 –

相關問題