2009-09-18 145 views
0

是否有可能傳遞派生類型,其中基類型預期強類型視圖?強類型視圖

  1. 產品/列表
  2. 新聞/列表

其中 「列表」 視圖繼承System.Web.Mvc.ViewPage<Model<BaseList>>

控制器渲染視圖,即視圖( 「目錄」,產品列表)


編輯

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

其中產品列表&新聞列表:BaseList

編譯罰款,但得到有關不同的模型類型運行時錯誤。

如果這是不可能的,那麼完成這個的最好方法是什麼,而不是創建n個視圖?

回答

0

你的問題有點不清楚,但我想它與你有一個IList <數據庫>在你的模型做的,你想傳遞一個IList <派生>。這是不可能的,但在C#4中,您可以傳遞IEnumerable < Derived>而不是IEnumerable < Base>。

1

我認爲(但不確定)這與Covariance有關。

這怎麼我做的是創建一個強類型的ViewData例如像這樣:

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

然後,您可以讓您調用像

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

免責聲明一的ViewPage:所有寫意代碼