这是设置 - 我有一个列出产品的视图。在同一页面上,我有一个用户控件视图,列出了类别。
我将产品列表传递给视图,如下所示:
return View(myProducts);
用户控制视图通过ViewData [“Category”]
获取所需的数据现在,如果我尝试使用类似这样的强类型用户控件视图:
<%@ 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 :(得分:0)
类型A的通用列表不能分配给类型B的通用列表(其中B是从A派生的)。这是.Net中所有通用集合的一般规则。
答案 1 :(得分:0)
渲染局部视图时,请使用ViewData [“Category”]作为传递给控件的模型。
<% Html.RenderPartial( "MyUserControl", ViewData["Category"], ViewData ); %>