2010-02-05 13 views
10

posso avere una classe base per le viste in un progetto MVC come questo:ASP.NET MVC di base generico vista della classe

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

E poi in ASPX posso fare questo:

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

Questo funziona bene; il problema è quando provo a fare lo stesso con la versione generica:

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

Quando provo ad usare questo dal ASPX, in questo modo:

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

ricevo il seguente messaggio di errore:

Errore di analisi attributo 'qualcosa': Tipo 'System.Web.Mvc.ViewPage' non ha una proprietà pubblica denominata 'qualcosa'.

Nota come tenta di utilizzare System.Web.Mvc.ViewPage anziché la mia classe BaseViewPage. Per renderlo più interessante, se rimuovo l'attributo "Something" dalla direttiva Page e inserisco del codice nella versione generica di BaseViewPage (OnInit per esempio) la classe viene effettivamente chiamata/used/instantiated.

Quindi, sto facendo qualcosa di sbagliato o si tratta di una limitazione/bug? Grazie.

+0

possibile duplicato di [Generic Inherited ViewPage <> e new Property] (http://stackoverflow.com/questions/1480373/generic-inherited-viewpage-and-new-property) –

risposta

7

Ho avuto esattamente questa stessa domanda alcuni mesi fa. Mi ha fatto impazzire fino al Justin Grant answered it here.

+0

Molto bello; molte grazie! Ho provato a cercare SO prima di postare, ma credo di non aver usato le parole giuste ... – pbz

Problemi correlati