私は昨日これを機能させました、そしてそれが機能しなくなった理由は完全に私を超えています。次の基本的なシナリオがあります。
私のアプリケーションには、テナントと家主の2種類の役割があります。テナントがログインすると、テナントのプロフィールページに移動する必要があります。同じことが家主にも当てはまります(現時点では、テナントのみを扱っています)。
シナリオのワークフローは次のとおりです。
ユーザーは経由でログインし
_LoginPartial
ます。パーシャルのロジックは正しいと思いますが、何らかの理由で、ここにかみそりのコードを適切に貼り付けることができません...ログインボタンをクリックすると、のが呼び出され
Login
ActionResult
ますAccountController
。このメソッドは、ユーザーを検証し、ユーザーがどのロールに属しているかを確認します。ユーザーがロールテナントに属している場合は、のにリダイレクトする必要がMyProfile
ActionResult
ありTenantsController
ます。のコードLogin
:public ActionResult Login(LoginModel model) { if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe)) { if (Roles.IsUserInRole("Tenant")) { return RedirectToAction("MyProfile", "Tenants"); } } // If we got this far, something failed, redisplay form ModelState.AddModelError("", "The user name or password provided is incorrect."); return View(model); }
呼び出される
MyProfile
と、ユーザーのプロファイルが表示されます。のコードMyProfile
ActionResult
:public ActionResult MyProfile() { var db = new LetLordContext(); var currentTenant = db.UserProfile.First(t => t.UserName == HttpContext.User.Identity.Name); return View(currentTenant); }
私が昨日これは機能していたと言ったが、ログインボタンをクリックすると次のエラーが発生する_RegisterPartial
:
ビュー「ログイン」またはそのマスターが見つからなかったか、検索された場所をサポートするビューエンジンがありません。次の場所が検索されました:〜/ Views / Account / Login.aspx〜/ Views / Account / Login.ascx〜/ Views / Shared / Login.aspx〜/ Views / Shared / Login.ascx〜/ Views / Account/Login。 cshtml〜/ Views / Account / Login.vbhtml〜/ Views / Shared / Login.cshtml〜/ Views / Shared / Login.vbhtml
MVCがログインと呼ばれるビューを探しているのはなぜですか?Loginというビューにルーティングするように指定していません。ルーティング/コントローラーロジックに何か問題がありますか?助けていただければ幸いです。