2017-02-11 6 views
1

私のアプリケーションには3つの役割があります。私はインデックスページを持っていますが、私は登録されていないユーザーにしかアクセスできません。だから登録ユーザーがインデックスページに行くのを私のアイデアは彼のインデックスページにリダイレクトすることです。ユーザーが特定のロールに属していない場合、別のアクションにリダイレクトする

私はこのようにそれを行うにしようとしています

:私はCompanyAdministratorとしてログインしていると私は、ホーム/インデックスに移動しようとすると、intead私は

を取得していますリダイレクト取得するときに

public ActionResult Index() 
     { 
      if (User.IsInRole("CompanyAdministrator")) 
      { 
       return RedirectToAction("Index", "CompaniesController"); 

      } 
      else if (User.IsInRole("Employee")) 
      { 
       return RedirectToAction("Index", "EmployeeController"); 
      } 
      return View(); 

'/'アプリケーションのサーバーエラー。

リソースが見つかりません。

とURLのようになります。質問はあまりにも主観的であるが、私はこの問題のexplenationを見つけることができなかった、と私はそれを自分自身をexplaingできない場合http://localhost:49858/CompaniesController

申し訳ありません。

これに関するアドバイスはありますか?

答えて

2

接尾辞Controllerは不要です。コントローラ名はControllerの部分を使用せずにそのまま使用してください。

これは動作するはずです。

return RedirectToAction("Index", "Companies"); 

Controllerサフィックスは、アプリ(ルートを登録する)を開始するときに、すべてのコントローラを検出するために、MVCフレームワークによって使用されます。それ以外のエンドユーザ(コードを書く人)通常ははどこでもフルクラス名を使う必要はありません! (C#6)cannot be used to get the Controller class name

1

コントローラー名に 'コントローラー'を追加する必要はありません。それは

return RedirectToAction("Index", "Companies"); 
です。
関連する問題