2010-02-18 11 views
2

Je me demande s'il est possible de rendre un ViewPage à l'intérieur d'un ViewPage.ASP.NET MVC ViewPage rendu dans une ViewPage

Normalement, vous auriez ceci:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<my_object>"%> 

puis dans la page que vous pouvez rendre un contrôle utilisateur:

<%Html.RenderPartial("~/Views/Shared/mycontrol.ascx", this.ViewData);%> 

Cependant, je voudrais rendre un ViewPage dans un ViewPage . La raison? Je travaille sur un très gros projet avec plus de 10 développeurs et beaucoup de code déjà écrit. Un grand morceau est déjà écrit qui restitue dynamiquement l'interface utilisateur mais il y a 15+ méthodes qui passent autour d'une ViewPage.

En d'autres termes, j'appelle cela dans le ViewPage:

<%this.RenderUI(); 

Et le bout de la méthode est la suivante:

public static void RenderUI(this ViewPage viewPage) 

Ainsi, afin de réutiliser le plus de code, je aimer tirer l'appel à this.RenderUI() dans son propre ViewPage mais l'inclure ensuite sur certaines ViewPages. C'est une situation difficile et ça n'a pas l'air nécessaire, mais il y a beaucoup de retravailler le code qui devrait être fait autrement. Est-ce que quelqu'un sait si cela peut être réalisé?

Répondre

1

Rendez votre sous-vue dans la vue principale en utilisant RenderAction() au lieu de RenderPartial(). Cela vous permet de conserver votre contrôleur et votre vue pour chaque sous-vue, et "injecter" la sortie de chaque combinaison contrôleur/sous-vue dans n'importe quelle vue principale, à l'emplacement de votre choix dans la vue principale.

Cette disposition devrait simplifier la gestion de chacune des vues et sous-vues. C'est une approche qui rappelle les "parties web" dans ASP.NET ou SharePoint traditionnel. C'est une approche plus modulaire qui permet une meilleure réutilisabilité.

+0

Merci J'aime cette idée. Je vais essayer. Est-ce que quelqu'un d'autre a des suggestions? – macca1