【发布时间】:2013-02-28 12:59:21
【问题描述】:
我昨天有这个工作,为什么它停止工作完全超出了我的理解。我有以下基本场景:
在我的应用程序中有两种类型的角色,租户和房东。当租户登录时,他们应该被引导到租户个人资料页面,房东也是如此(目前我只与租户合作)。
这是场景的工作流程:
用户通过
_LoginPartial登录,我确定部分中的逻辑是正确的,但由于某种原因,所以不会让我将剃须刀代码正确粘贴到此处...-
点击登录按钮会调用
AccountController中的LoginActionResult。该方法验证用户并检查他们的角色。如果用户是租户角色,他们应该被重定向到TenantsController中的MyProfileActionResult。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时应显示用户的个人资料。MyProfileActionResult的代码: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 的视图?我没有将它指定为路由到名为 Login 的视图。我的路由/控制器逻辑有问题吗?非常感谢您的帮助。
【问题讨论】:
-
你调试到这一行的代码了吗?..... return RedirectToAction("MyProfile", "Tenants");
-
调试时不满足“如果”,由于某种原因,角色似乎不存在 - 它们是昨天的。
-
是的,这就是为什么我在我的答案中提供了代码来测试它是否令人满意:) 谢谢
标签: c# asp.net-mvc view asp.net-mvc-routing asp.net-mvc-views