2009-04-10 59 views
1

這是設置 - 我有一個列出產品的視圖。在同一頁面上,我有一個列出類別的用戶控件視圖。是強制類型的用戶控制視圖不允許asp.net mvc?

我通過產品的列表視圖,像這樣:

return View(myProducts); 

用戶控制視圖得到它通過計算機[「類別」]

現在所需要的數據,如果我嘗試使用像這樣的強類型的用戶控制視圖:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<myData.Models.Category>>" %> 

我得到這個錯誤:

ŧ他傳入字典的模型項目類型爲'System.Collections.Generic.List 1[myData.Models.Product]' but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable 1 [myData.Models.Category]'。

由於我將「產品」列表傳遞給視圖,用戶控件視圖似乎很困惑。所以,如果我刪除這樣的強打字:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %> 

一切工作正常。

那麼,強類型的用戶控制視圖只是不允許?或者我只是做錯了什麼?

回答

0

當您渲染局部視圖時,請使用ViewData [「Category」]作爲傳遞給控件的模型。

<% Html.RenderPartial("MyUserControl", ViewData["Category"], ViewData); %> 
+0

正是我在找什麼,謝謝! – codette 2009-04-10 03:14:55

0

類型A的通用列表不可分配給類型B的通用列表(其中B是從A派生的)。這是.Net中所有通用集合的通用規則。

+0

我認爲問題在於他對局部視圖使用與頁面相同的模型。根據定義,它們應該是完全不同的模型,我認爲他只需要使用一個簽名,允許他將正確的模型傳遞給部分。 – tvanfosson 2009-04-10 03:14:46

相關問題