Я могу иметь базовый класс для представлений в проекте MVC следующим образом:
public class BaseViewPage : System.Web.Mvc.ViewPage
{
public string Something { get; set; }
}
И затем в ASPX я могу это сделать:
<%@ Page Something="foo" Language="C#" Inherits="MyNamespace.BaseViewPage" %>
Это прекрасно работает; проблема в том, что я пытаюсь сделать то же самое с общей версией:
public class BaseViewPage<TModel> :
System.Web.Mvc.ViewPage<TModel> where TModel : class
{
public string Something { get; set; }
}
Когда я пытаюсь использовать это из ASPX, вот так:
<%@ Page Something="foo" Language="C#"
Inherits="MyNamespace.BaseViewPage<SomeClass>" %>
Я получаю сообщение об ошибке:
Ошибка синтаксического анализа атрибута "something": Тип "System.Web.Mvc.ViewPage" не имеет открытого свойства с именем "something".
Обратите внимание, как он пытается использовать System.Web.Mvc.ViewPage, а не мой класс BaseViewPage. Чтобы сделать его более интересным, если я удалю атрибут "Что-то" из директивы "Страница" и поместил некоторый код в общую версию BaseViewPage (например, OnInit), класс фактически вызывается/используется/создается.
Итак, я делаю что-то неправильно или это ограничение/ошибка? Спасибо.