2010-12-06 35 views
2

J'essaie de créer un contrôle utilisateur générique. J'ai donc besoin d'un contrôle utilisateur avec un paramètre générique.contrôle viewmodel générique (MVC)

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

Le contrôle ne se soucie pas vraiment de ce qu'est le T. Cela fonctionne avec n'importe quel T.

Lorsque je rends le contrôle, je peux l'instancier avec l'argument générique.

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

C'est l'idée de base - existe-t-il un moyen de rendre un contrôle utilisateur prenant un argument générique supplémentaire. Si je voulais construire une telle chose, par où commencerais-je?

Des pensées?

Répondre

1

Si vous utilisez .NET 4.0, vous pouvez utiliser IPager<object> dans la déclaration <%@Control %>. Ensuite, le support des génériques covariants signifie que vous pouvez lui passer un IPager<MyClass> en tant que modèle dans RenderPartial et il fonctionnera encore très bien.

+0

Vous avez raison, j'ai essayé cette approche en studio 2008 mais ça ne marche pas. Vous avez besoin de types covariants. Je vais essayer de motiver pour utiliser le nouveau cadre. Dommage que ça ne marche pas avec 2008. Ça aurait dû. – Jim