Сильно типизированные взгляды - PullRequest
0 голосов
/ 18 сентября 2009

возможно ли передавать производные типы там, где от базовых типов ожидается строго типизированное представление?

т. Е.

  1. Продукты / Список
  2. Новости / Список

где представление "список" Наследует System.Web.Mvc.ViewPage<Model<BaseList>>

контроллер отображает представление, т.е. просмотр («Список», ProductsList)


изм

return View("List", new Model<ProductsList>());
Model<T> where T : IMyList 
ProductsList : BaseList
NewsList : BaseList
BaseList : IMyList

, где ProductsList & NewsList: BaseList

компилируется нормально, но выдает ошибку времени выполнения о различных типах моделей.

Если это невозможно, каков наилучший способ для достижения этой цели, а не создания n представлений?

Ответы [ 2 ]

1 голос
/ 18 сентября 2009

Я думаю (но не уверен), что это имеет отношение к Ковариация .

Как я это делаю - создаю строго типизированные viewData, например, вот так:

public class YourViewData: System.Web.Mvc.ViewDataDictionary
{
    public IMyList TheList { get; set; }
}

Затем вы можете создать ViewPage, который вы называете, как

return View("List", new YourViewData(){TheList = new ProductList(){abunchOfItems});

Отказ от ответственности: Весь код от руки

0 голосов
/ 18 сентября 2009

Ваш вопрос немного неясен, но я думаю, это связано с тем, что в вашей модели есть IList , и вы хотите передать IList . Это невозможно, но в C # 4 вы можете передать IEnumerable вместо IEnumerable .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...