我有一个订单页面,它是从具有一些属性的Model对象(Order)呈现的。 Order对象的一个属性是
public List<OrderItem> Items { get; set; };
,另一个是
public List<OrderComment> Comments { get; set; };
我的主页面声明如下:
public class OrderView : ViewPage<Order>
我想为每个OrderItem(名为OrderItemControl)和每个OrderComment的另一个用户控件(名为OrderCommentControl)设置用户控件。如果我可以为每个集合使用转发器那么这将是很好的,但我遇到了一个问题。我希望我的用户控件声明如下所示:
public class OrderItemControl : ViewUserControl<OrderItem>
public class OrderCommentControl : ViewUserControl<OrderComment>
当我尝试这样说时,我收到错误:
{“传入字典的模型项的类型为'Order',但此字典需要'OrderItem'类型的模型项。”}
我猜测转发器可能不是正确的方法,但我真的希望每个用户控件都有一个OrderItem或OrderComment类型的模型,而不仅仅是Order。
答案 0 :(得分:3)
是。使用RenderPartial
,您可以使用提供模型的签名,只需使用当前视图中可用的任何模型对象。
<% foreach (OrderItem orderItem in ViewData.Model.OrderItems)
{
%>
<%= Html.RenderPartial( "OrderItem", orderItem, ViewData ) %>
<% } %>
你可以在http://www.codeplex.com/aspnet的实际来源中找到答案。单击Source选项卡,然后向下导航到MVC源代码树。
答案 1 :(得分:0)