ASP.NET MVC универсальный основной класс представления

У меня может быть базовый класс для представлений в проекте 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, например), класс на самом деле называют / используемым / инстанцированный.

Так, я делаю что-то не так, или действительно ли это - ограничение / ошибка?Спасибо.

10
задан Uwe Keim 19 August 2012 в 10:53
поделиться

1 ответ

Несколько месяцев назад у меня был точно такой же вопрос. Сводил меня с ума, пока Джастин Грант не ответил здесь.

7
ответ дан 4 December 2019 в 02:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: