所以我一直在研究MVC2应用程序,只是为了真正学习绳索。我不喜欢默认设置的一件事是视图,模型和控制器在一起组装在一起。这不难克服,移动到不同的项目并迁移每个文件夹内容。
然而,现在是时候开始摆弄用户角色了。我装饰一个像这样的控制器动作;
[Authorize(Roles = "Admin"), AcceptVerbs(HttpVerbs.Post)]
public ActionResult EditProject(Guid Id, FormCollection formValues){}
以下是我的解决方案的设置方式;
MySolution.Web.Views
< - 所有aspx /
ascx的东西MySolution.Controllers
< - 所有控制器,包括
默认的AccountController来了
使用MVC2应用程序我在MySolution.Controllers.AccountModels
命名空间中也有默认的“AccountModel”,这是LogOnModel
类所在的位置。现在,当我运行程序并要求控制器执行需要某个角色的动作时(我不是),我得到以下错误;
“编译器错误消息:CS0234:名称空间'MySolution.Web'中不存在类型或命名空间名称'Models'(您是否缺少程序集引用?)”
它还突出显示以下行作为源错误;
“public class views_account_logon_aspx:System.Web.Mvc.ViewPage,System.Web.SessionState.IRequiresSessionState,System.Web.IHttpHandler”
并将错误的行和文件注释为;
“源文件:c:\ Users \\ AppData \ Local \ Temp \ Temporary ASP.NET Files \ root \ d1b48054 \ 1ce7c091 \ App_Web_logon.aspx.5f83eb8c.mdfplvvy.0.cs”
所以我尝试导航到该文件并手动输入LogOnModel的正确命名空间,但每次运行项目时,都会创建此文件的新版本,并重新生成LogOnModel的错误位置。很明显,应用程序中仍有一些内容仍在查找不再存在的AccountModel的原始位置。
我查看了我的web.config文件,找不到任何似乎引用MySolution.Web命名空间中的LogOnModel的地方。
有谁知道我如何通知LogOnModel现在所在的应用程序?
实际应用程序在AccountController的LogOn操作中失败:
public ActionResult LogOn()
{
return View(); // Failing here
}
所以也许这与路由有关?我没有触及Global.asax文件的默认设置。