2011-03-15 21 views
9

Tengo una clase personalizada que amplía WebViewPage que utilizo como base para todas mis vistas Razor usando el método descrito aquí: http://haacked.com/archive/2011/02/21/changing-base-type-of-a-razor-view.aspx. Todo funciona bien a menos que lo mueva a un espacio de nombres que sea diferente del espacio de nombres de las vistas con lo cual el IntelliSense deja de funcionar (sí, incluí el espacio de nombres de la página WebViewPage personalizada en la sección de espacios de nombres de la sección system.web.webPages.razor de el web.config en la carpeta de vistas). ¿Hay alguna forma de evitar esto?Asp.Net MVC 3 WebViewPage personalizado en diferentes espacios de nombres rompe IntelliSense

Lo que quiero hacer eventualmente es mover todas las vistas a otro proyecto al que tengan acceso los diseñadores gráficos, pero no quiero la clase de WebViewPage personalizada en ese proyecto. ¿Es esto posible sin romper IntelliSense?

+1

¿Cómo está configurando el tipo de base? – SLaks

Respuesta

11

Esto va a sonar tonto, pero reconstruir y reiniciar Visual Studio unas cuantas veces :-D

simplemente reproduje el tema, y ​​intentado todo para conseguir que funcione (incluyendo el cambio en pageBaseType además del uno) Reinicié VS, y comenzó a funcionar. Se eliminó la pieza y aún funciona después de varios ciclos de limpieza/reconstrucción/reinicio.

Mi Vistas/Web.config tiene esto:

<system.web.webPages.razor> 
    <pages pageBaseType="ClassLibrary1.MyBasePage"> 
</system.web.webPages.razor> 

Mi proyecto web tiene una referencia al proyecto ClassLibrary1.

Mi clase personalizada (en ClassLibrary1) tiene el siguiente aspecto:

namespace ClassLibrary1 
{ 
    public abstract class MyBasePage<T> : WebViewPage<T> 
    { 
     public string DannyName { get; set; } 

     public MyBasePage() 
     { 
      this.DannyName = "Danny Tuppeny"; 
     } 
    } 
} 

Y cuando en los proyectos web Vistas/Inicio/Index.cshtml, consigo IntelliSense para "@DannyName" cuando tecleo "@D ".

Algunas cosas que intentado que podría haber tenido un efecto, pero sigue trabajando después de lo quité:

  • Agregado el pageBaseType al Vistas/web.config en la sección
  • añadido un no- versión genérica de la clase:
    • MyBasePage clase abstracta pública: MyBasePage {}
2

Descubrí que es suficiente reiniciar el servidor web Cassini/IIS Express/IIS.

+0

Tuve que reiniciar VS para que funcione. – Gandarez

Cuestiones relacionadas