2009-04-10 56 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

相关问题