我正在努力将我的 MVC 3 应用程序(我最近使用 MS 工具从 MVC 2 转换)中的一些部分 View 从 ascx 转换为 cshtml (Razor)。
简单地说:我正在尝试直接从 aspx 母版页执行 Razor 部分 View 的 Html.RenderPartial。 Razor 部分 View 中只包含“Hello World”——没有 @model 或 @inherits 或任何其他内容。当我运行我的应用程序时,此时出现以下错误:“.....cshtml 处的 View 必须派生自 ViewPage、ViewPage、ViewUserControl 或 ViewUserControl。”换句话说,它看起来像是在寻找非 Razor View 。
所以..如果我明确地将“@inherits ViewUserControl”放在我的razor部分的顶部,我会得到一个不同的错误:“...cshtml.Execute():没有找到合适的方法来覆盖。”
我从头开始创建了一个新的 MVC 3 应用程序,并以最简单的方式尝试了相同的操作。在 razor 部分上执行 RenderPartial 的 aspx 母版页。而且效果很好。但是这个庞大的现有应用程序太大了,无法从头开始。但是其中的某些东西阻止了它的工作。
这可能看起来像其他一些问题的重复,但我已经尝试了我发现的所有问题。我什至从我的机器上卸载了 MVC 2。非常欢迎建议/帮助!
谢谢...
最佳答案
尝试比较这两个项目,看看是否有任何显着差异 - 特别是 Web.config(尽管 csproj 中也可能有设置)。用于 View /页面的基本类型之类的内容存储在 web.config 中,因此它们可能设置不正确,甚至在您的原始项目中丢失。
默认的 MVC 项目在 View 文件夹的 web.config 中有类似这样的内容:
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
和
<pages validateRequest="false" pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
关于.net - 无法让 razor 和 aspx 正常运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6398110/