2010-12-06 85 views
2

我想创建一个通用的用户控件。 所以我需要一个带有通用参数的用户控件。通用视图模型控件(MVC)

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

该控件并不真正关心T是什么。它适用于任何T.当我渲染控件时,我可以使用泛型参数实例化它。

<%= Html.RenderPartial<MyClass>("Pager", Model); %> 

这就是基本思想 - 有没有什么办法让用户控件需要额外的通用参数。如果我想建立这样的事情,我会从哪里开始?

有什么想法?

回答

1

如果您使用的是.NET 4.0,则可以在<%@Control %>声明中使用IPager<object>。然后,协变泛型支持意味着您可以在RenderPartial中将它作为模型传递给IPager<MyClass>,它仍然可以正常工作。

+0

你是对的,我在2008演播室尝试了这种方法,但它不起作用。你需要协变类型。我会尝试并激励使用新的框架。可惜它不适用于2008年。它应该有。 – Jim 2010-12-13 11:27:19