2010-02-05 13 views
10

puedo tener una clase base para los puntos de vista en un proyecto de MVC como este:ASP.NET MVC base genérica vista de clase

public class BaseViewPage : System.Web.Mvc.ViewPage 
{ 
    public string Something { get; set; } 
} 

Y luego en el ASPX que puedo hacer esto:

<%@ Page Something="foo" Language="C#" Inherits="MyNamespace.BaseViewPage" %> 

Esto funciona bien; el problema es cuando trato de hacer lo mismo con la versión genérica:

public class BaseViewPage<TModel> : 
    System.Web.Mvc.ViewPage<TModel> where TModel : class 
{ 
    public string Something { get; set; } 
} 

Cuando trato de utilizar este del ASPX, así:

<%@ Page Something="foo" Language="C#" 
    Inherits="MyNamespace.BaseViewPage<SomeClass>" %> 

consigo el mensaje de error:

Error al analizar el atributo 'algo': Escriba 'System.Web.Mvc.ViewPage' no tiene una propiedad pública llamada 'algo'.

Observe cómo se intenta usar System.Web.Mvc.ViewPage en lugar de mi clase BaseViewPage. Para hacerlo más interesante, si elimino el atributo "Something" de la directiva de la Página y coloco algún código en la versión genérica de BaseViewPage (OnInit por ejemplo), la clase es realmente llamada/utilizada/instanciada.

Entonces, ¿estoy haciendo algo mal o es esto una limitación/error? Gracias.

+0

posible duplicado de [Heredado genérico página <> y nueva propiedad] (http://stackoverflow.com/questions/1480373/generic-inherited-viewpage-and-new-property) –

Respuesta

7

Tuve esta misma pregunta hace unos meses. Me llevó loco hasta Justin Grant answered it here.

+0

Muy bonito; ¡muchas gracias! Traté de buscar SO antes de publicar, pero creo que no utilicé las palabras correctas ... – pbz

Cuestiones relacionadas