1

我们最近将一个项目升级到 MVC 2,我们想使用 Areas,但有一个问题。

我们创建了一个新区域,设置了一个控制器,配置了一条路线,并在正确的位置创建了一个视图。当我们运行代码时,它成功地找到了路由并点击了控制器,但是当它渲染视图时出现了异常。

Web 表单视图引擎似乎没有在“区域”部分中查找视图。我们看到的错误是:

~/Views/<ControllerName>/<ViewName>.aspx
~/Views/<ControllerName>/<ViewName>.ascx
~/Views/Shared/<ViewName>.aspx
~/Views/Shared/<ViewName>.ascx

什么时候应该:

~/<AreaName>/Views/<ControllerName>/<ViewName>.aspx
~/<AreaName>/Views/<ControllerName>/<ViewName>.ascx
~/<AreaName>/Views/Shared/<ViewName>.aspx
~/<AreaName>/Views/Shared/<ViewName>.ascx
~/Views/<ControllerName>/<ViewName>.aspx
~/Views/<ControllerName>/<ViewName>.ascx
~/Views/Shared/<ViewName>.aspx
~/Views/Shared/<ViewName>.ascx

这表明它仍在以某种方式使用 MVC 1 dll,但我们仔细查看后只能找到对 MVC V2 的引用(在第三方 DLL xVal 中有 V1 引用,但修复它并没有区别)。

我只能想象我们在升级时错过了一些东西,或者我们遇到了一些不寻常的边缘情况,因为网络上似乎没有任何东西与我们遇到的问题相匹配。

我们可以看看哪些东西可以帮助我们解决这个问题?

提前感谢您提供的任何帮助。干杯,扎克

4

1 回答 1

2

我们可以看看哪些东西可以帮助我们解决这个问题?

  1. 确保AreaRegistration.RegisterAllAreas();首先注册已注册区域路线。区域路线也需要注册。
  2. 确保生成的 URL 链接在使用和其他相关 URL 帮助程序时包含区域名称作为参数之一ActionLink
  3. 有时只需从头开始删除并重新添加区域。听起来很傻,但它确实有效。
  4. 本页左侧的相关 SO 问题可能会有所帮助。我已经链接了一个我认为可能有价值的
于 2010-09-29T09:15:32.177 回答