У меня может быть базовый класс для представлений в проекте 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>" %>
Я получаю сообщение об ошибке:
Ошибка, анализирующая атрибут 'что-то': Введите 'Систему. Сеть. Mvc. ViewPage' не назвали общественную собственность 'что-то'.
Заметьте, как это пытается использовать Систему. Сеть. Mvc. ViewPage, а не мой класс BaseViewPage. Для создания оно более интересный, если я удаляю "Что-то", приписывает из директивы Page и помещает некоторый код в универсальную версию BaseViewPage (OnInit, например), класс на самом деле называют / используемым / инстанцированный.
Так, я делаю что-то не так, или действительно ли это - ограничение / ошибка?Спасибо.
Несколько месяцев назад у меня был точно такой же вопрос. Сводил меня с ума, пока Джастин Грант не ответил здесь.