Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error "The view at '~/Views/Page/home.aspx' must derive from ViewPage, ViewPage<TViewData>, ViewUserControl, or ViewUserControl<TViewData>"

I've just installed MVC2 and I've got a view that looks like this

<%@ 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>

And the controller is just returning the view. But when I run the page I get this error:

System.InvalidOperationException: The view at '~/Views/Page/home.aspx' must derive from ViewPage, ViewPage, ViewUserControl, or ViewUserControl.

like image 892
Glenn Slaven Avatar asked Mar 18 '10 06:03

Glenn Slaven


3 Answers

You might unintentionally have two versions of the MVC framework loaded into the same application. To confirm, download MVC 2 Futures from http://aspnet.codeplex.com/releases/view/41742. There is a file MvcDiagnostics.aspx in this ZIP file.

  1. Copy MvcDiagnostics.aspx to the root of your web project.
  2. Reproduce the error.
  3. After reproducing the error, go to /MvcDiagnostics.aspx and see if it complains (will be in bold red lettering) about multiple versions of the framework being loaded. The tool should suggest a resolution if this is the case.

Don't forget to delete MvcDiagnostics.aspx from your project when you are done.

like image 194
Levi Avatar answered Oct 15 '22 03:10

Levi


I was getting this error upgrading my MVC 1.0 project to MVC 2.0. If you are doing this have a look at http://weblogs.asp.net/leftslipper/archive/2010/03/10/migrating-asp-net-mvc-1-0-applications-to-asp-net-mvc-2-rtm.aspx

Double check your web.config against a new MVC 2.0 project.

like image 22
David Avatar answered Oct 15 '22 02:10

David


Doing either a batch->build->clean at the solution level OR a clean at the project level usually takes care of this if you have already done the due diligence of removing/replacing the undesired version(s) of System.Web.Mvc from project references and *.config files...

like image 1
Bohemian Avatar answered Oct 15 '22 04:10

Bohemian