2010-03-17 14 views
17

Estoy intentando crear una vista fuertemente tipado con un "MVC Control de vista del usuario" que se está representando usando Html.RenderPartial(). La parte superior de mi archivo ascx tiene este aspecto:ASP.NET MVC establecimiento inflexible Vista parcial, da no se pudo cargar el tipo de error

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.Collections.IEnumerable<string>>" %> 

No hay nada más en esta página, actualmente.

Cuando ejecuto la aplicación y la carga de la página que hace que este control, me sale el siguiente error:

Could not load type 'System.Web.Mvc.ViewUserControl<System.Collections.IEnumerable<string>>'. 

Por lo tanto, a continuación, he simplificado que:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<String>" %> 

Y entonces, justo en caso necesitó ser calificado completamente:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.String>" %> 

Cada vez que consigo el mismo error (sustituyendo el tipo). ¿Qué estoy haciendo mal aquí? Estoy en .NET 3.5 con ASP.NET MVC 1.0 RTM.

Respuesta

27

Lo tengo trabajo. He seguido las instrucciones de http://www.codewrecks.com/blog/index.php/2009/04/05/could-not-load-type-systemwebmvcviewpage/ y que hizo el truco para mí. Debo señalar que también actualicé a ASP.NET MVC 2.0 RC desde el 3/17/2010 primero. El problema persistió aún hasta que seguí las instrucciones en esa página. No estoy seguro si un nuevo proyecto de MVC hace esto por usted ahora o no.

La solución, en caso de que la página de referencia se va, era añadir un Web.config a mi directorio Vistas, y poner esto en él:

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
    <httpHandlers> 
    <add path="*" verb="*" 
     type="System.Web.HttpNotFoundHandler"/> 
    </httpHandlers> 

<!-- 
    Enabling request validation in view pages would cause validation to occur 
    after the input has already been processed by the controller. By default 
    MVC performs request validation before a controller processes the input. 
    To change this behavior apply the ValidateInputAttribute to a 
    controller or action. 
--> 
<pages 
    validateRequest="false" 
    pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
    pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
    userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
    <controls> 
    <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" /> 
    </controls> 
</pages> 
</system.web> 

<system.webServer> 
<validation validateIntegratedModeConfiguration="false"/> 
<handlers> 
    <remove name="BlockViewHandler"/> 
    <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler"/> 
</handlers> 
</system.webServer> 
</configuration> 

También debo señalar que para MVC 2.0 se necesita para actualizar la versión # 's en la configuración.

+0

Gracias! Me olvidé por completo de copiar mi carpeta de visualización web.config. Me gustaría que el error hiciera más obvio que esto es lo que está mal. – DavGarcia

+0

Guau, el mismo problema aquí. Tenía el web.config - trabajado en mi máquina - no era parte de mi script de compilación. –

+0

acabo de crear una aplicación MVC2 y copiar el web.config de ese directorio Vistas. Gracias. –

Cuestiones relacionadas