Ich kann für Ansichten in einer MVC-Projekt wie dieses eine Basisklasse haben:ASP.NET MVC generische Basisansichtsklasse
public class BaseViewPage : System.Web.Mvc.ViewPage
{
public string Something { get; set; }
}
Und dann in der ASPX kann ich dies tun:
<%@ Page Something="foo" Language="C#" Inherits="MyNamespace.BaseViewPage" %>
Das funktioniert gut; das Problem ist, wenn ich versuche, das gleiche mit der generischen Version zu tun:
public class BaseViewPage<TModel> :
System.Web.Mvc.ViewPage<TModel> where TModel : class
{
public string Something { get; set; }
}
Wenn ich versuche, das von der ASPX zu verwenden, wie folgt aus:
<%@ Page Something="foo" Language="C#"
Inherits="MyNamespace.BaseViewPage<SomeClass>" %>
erhalte ich die Fehlermeldung:
Fehler beim Parsen Attribut ‚etwas‘: Typ ‚System.Web.Mvc.ViewPage‘ hat noch keine öffentliche Eigenschaft mit dem Namen ‚etwas‘.
Beachten Sie, wie es versucht, System.Web.Mvc.ViewPage anstelle meiner BaseViewPage-Klasse zu verwenden. Um es interessanter zu machen, wenn ich das "Something" -Attribut aus der Page-Direktive entferne und etwas Code in die generische Version von BaseViewPage (OnInit zum Beispiel) setze, wird die Klasse tatsächlich/used/instanziiert genannt.
Also, mache ich etwas falsch oder ist dies eine Einschränkung/bug? Vielen Dank.
mögliche Duplikate von [Generic Inherited ViewPage <> und neue Eigenschaft] (http://Stackoverflow.com/questions/1480373/generic-inherited-viewpage-and-new-property) –