2008-09-07 13 views
5

No estoy del todo seguro de lo que está sucediendo aquí; Cualquier ayuda sería apreciada..NET MVC Ambiguous Type Referencia

Estoy tratando de crear una nueva aplicación web .NET MVC. Estaba bastante seguro de que lo tenía configurado correctamente, pero estoy consiguiendo el error siguiente:

The type 'System.Web.Mvc.ViewPage' is ambiguous: it could come from assembly 
'C:\MyProject\bin\System.Web.Mvc.DLL' or from assembly 
'C:\MyProject\bin\MyProject.DLL'. Please specify the assembly explicitly in the type name. 

El error de la fuente que informa es el siguiente:

Line 1: <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %> 
Line 2: 
Line 3: <asp:Content ID="indexContent" ContentPlaceHolderID="MainContentPlaceHolder" runat="server"> 

Cualquier cosa destacan que soy haciendo completamente mal?

Respuesta

1

Este error generalmente indica un conflicto de nomenclatura de clase. Está haciendo referencia a dos espacios de nombres o creó una clase con el mismo nombre en otro espacio de nombres que está utilizando. Comenzaría por ver qué podría ser eso.

1
Inherits="System.Web.Mvc.ViewPage" 

Me imagino que esto debe ser puntiaguda en su clase Ver archivo de código subyacente, no a la clase ViewPage base.

2

¿Está utilizando un archivo CodeBehind, no veo el atributo CodeBehind = "" desde donde está especificando las Heredades? Luego, debe apuntar hereda al nombre de clase del código subyacente.

Ejemplo:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="MvcApplication4.Views.Home.Index" %> 

Asegúrese de que el Hereda está plenamente cualificado. Debería ser el espacio de nombres seguido del nombre de la clase.

3

Supongo que nombró una de su página "ViewPage" ¿es ese el caso?

Y al igual que @ Jonathan mencionó, esto huele:

Inherits="System.Web.Mvc.ViewPage" 

En mi aplicación MVC, todas las páginas de vista tienen su lugar:

Inherits="MySite.Views.Pages.Home" 

O algo a lo largo de la línea. El marcado de página aspx debe tener "Heredas" apuntando a su nombre de clase de código subyacente, no a la clase real que está heredando. El nombre del atributo es bastante engañoso, pero es un artefacto de días anteriores.

2

Estoy ejecutando ASP.NET MVC Beta y también encontré este error.

Se produjo cuando estaba tratando de eliminar el código detrás del archivo para una vista. Eliminé el atributo "CodeBehind" en la directiva @Page y cambié el atributo "Inherits" para apuntar a System.Web.Mvc.ViewPage, pero dejé el código aspx.cs real detrás del archivo intacto en mi proyecto.

En este punto, si traté de ejecutar mi proyecto, recibí el error que mencionaste.

Resolví este error al eliminar el archivo aspx.cs (código detrás) para la vista de mi proyecto.

1

Abra C: \ MyProject \ bin \ MyProject.DLL en Reflector y busque ViewPage para ver si ha definido uno por accidente.

2

Compruebe sus referencias de ensamblado a System.Web.Mvc en web.config.

mina se precisa expresamente 2.0.0.0, pero mi proyecto de referencia 3.0.0.0

+0

Recibí el mismo error al actualizar el proyecto de MVC 2 a MVC 5. Necesito reemplazar la versión de System.Web.Mvc en ambos archivos web.config (en ~/y ~/Views /). –

0

que tenían el mismo error exacto esta semana.

Mi archivo Webform.aspx tenía un archivo generated.cs generado. En este archivo, la clase en realidad se llamaba "ViewPage". Elimine el archivo del diseñador o mueva los contenidos de la clase al archivo webform.aspx.cs y mi error desapareció.

Solo poniéndolo ahí en caso de que alguien haya tenido este error.