Asp.net mvc “错误”;视图位于'~/Views/Page/home.aspx';必须从ViewPage派生,ViewPage<;TViewData>;,ViewUserControl或ViewUserControl<;TViewData>&引用;
我刚刚安装了MVC2,我得到了一个如下的视图Asp.net mvc “错误”;视图位于'~/Views/Page/home.aspx';必须从ViewPage派生,ViewPage<;TViewData>;,ViewUserControl或ViewUserControl<;TViewData>&引用;,asp.net-mvc,asp.net-mvc-2,views,Asp.net Mvc,Asp.net Mvc 2,Views,我刚刚安装了MVC2,我得到了一个如下的视图 <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Home.Master" Inherits="System.Web.Mvc.ViewPage" %> <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> Home </asp:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Home.Master" Inherits="System.Web.Mvc.ViewPage" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Home
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>Home</h2>
</asp:Content>
家
家
控制器只是返回视图。但当我运行该页面时,会出现以下错误:
System.InvalidOperationException:“~/Views/Page/home.aspx”处的视图必须派生自ViewPage、ViewPage、ViewUserControl或ViewUserControl
将MVC1.0项目升级到MVC2.0时,我遇到了这个错误。如果您正在这样做,请查看
根据新的MVC 2.0项目仔细检查web.config。您可能无意中将两个版本的MVC框架加载到同一个应用程序中。要确认,请从下载MVC 2 Futures。此ZIP文件中有一个文件MvcDiagnostics.aspx
完成后,不要忘记从项目中删除MvcDiagnostics.aspx。如果您已经完成了删除/替换不需要的版本的尽职调查,那么在解决方案级别执行
批处理->构建->clea
n或在项目级别执行清理通常会解决这一问题来自项目引用和*.config文件的System.Web.Mvc
您可以尝试使用
最好在源代码控制下使用代码,这样您就可以看到所有更改。它更新了我不想要的javascript,所以我恢复了它,只保留了它对razor的web.config所做的更改
请务必阅读它在上的功能和不支持的功能。我通过让我的自定义视图引擎直接继承RazorViewEngine解决了这个问题
public class MainViewEngine : RazorViewEngine
{
public MainViewEngine()
{...
}}
然后在Global.asax文件应用程序启动事件中注册该viewengine:
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new MainViewEngine());
显然,这是假设您正在使用Razor。检查引用中对System.Web.Mvc.dll文件的引用。确保其指向C:\ProgramFiles(x86)\Microsoft ASP.NET\ASP.NET MVC 3\Assemblys\System.Web.MVC.dll 如果它指向ASP.NET MVC 4目录下的目录,则在记事本中打开项目文件。寻找
<Reference Include="System.Web.Mvc">
<Private>False</Private>
</Reference>
假的
这应该改为
<Reference Include="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35, processorArchitecture=MSIL" />
这将有助于指向特定的MVC版本您确定所显示的代码属于
~/Views/Page/home.aspx
?您通过提问解决了我的问题。非常感谢。我看到你继承了遗产=“System.Web.Mvc.ViewPage并使用了它,现在我可以在我的MVC5应用程序中使用reportviewer了!可能您只是忘记了更改CodeBehind文件中继承自的自动生成基类,请参见-至少这是我的问题,我偶然发现了多个问题,这些问题并不表示+1:我有相同的问题,在我的情况下,确实加载了两个不同版本的MVC2。然而,我不知道诊断方面的事情。很高兴知道。是的,这就是问题所在,我最终不得不在web项目中将MVC dll标记为“复制本地”&它解决了问题,谢谢!谢谢。它帮助我将解决方案从MVC1.0迁移到MVC4。0@LeviSystem.Web.Mvc是5.2.40版本,但问题仍然存在。@Levi I将Mvc从5.2.4升级到了5.2.7版本。。。。。没什么问题