2016-11-11 30 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

この時点で別のコントローラビューを返すことは可能ですか?代わりに、単純なRedirectToAction

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

+3

'return RedirectToAction(" Login "、" Login ");'(あなたの 'return'がありません) –

+1

あなたはすべてのアクションメソッドでそれをやっていますか?何らかの認証(_i.e。formas authentication_)を実装し、すべてのものを処理するために '[Authorize]'属性を使うべきです。 –

+0

@AdilMammadov:それはasp.net mvcで利用できますか?私はこれに新しいです。セッションでユーザー名を保持することでそれを行うことを考えました。 – ViVi

答えて

1

は、次のコードを使用する必要があります。

ActionResultは、アクションが完了した後にアクションインボーカによって実行される命令セットです。 RedirectToActionResult(返品タイプはRedirectToAction)には、正しいリダイレクトを実行するためにResponseに書き込むべき指示が含まれています。

私が理解している限り、これはアクションの呼び出しがどのように動作するかを示しています。正式なドキュメンテーションでこれについての別の意見があります。

+0

お返事ありがとうございます。 Stephen Mueckeのコメント – ViVi

+0

@ViViに従って修正済みです。悲しいですが、私の答えはちょっと後でStephen Mueckeさんのコメントです –

関連する問題