2010-11-13 10 views
1

J'ai un site utilisant une seule page master.page. Dans la page master.page, j'ai un contrôle utilisateur fortement typé (.ascx) appelé "ControlPanel". Son type est ControlPanelViewModel.Imbrication d'un contrôle fortement typé dans la page maître ASP.NET

Voici la page de mater - MasterFrame.master:

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %> 

<body> 
    <% Html.RenderPartial("ControlPanel"); %> <!-- Here I need to pass the ControlPanelViewModel --> 

    <!-- main content area --> 
</body> 
</html> 

Voici la page de contrôle personnalisé - ControlPanel.ascx:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<ControlPanelViewModel>" %> 
<!-- Some content which are using the ControlPanelViewModel --> 

Maintenant, la question est de savoir comment envoyer le ControlPanelViewModel correct contrôle personnalisé de la page maître? Quelle est la meilleure approche? Existe-t-il une sorte de bonne pratique ou de modèle de conception pour ce cas?

Répondre

1

Svick merci pour la réponse, mais votre approche est liez à peu près modèle de vue. Je suppose que c'est ce que les gars les plus ASP.NET utilisent, parce que j'ai lu à ce sujet dans quelques articles. Malheureusement, ce n'est pas assez bon pour mon site, parce que j'ai trop de modèles existants de code et de vue. La meilleure approche est à mon avis, en utilisant la méthode Html.RenderAction, qui appelle votre méthode de contrôleur.

0

Si vous avez l'objet de modèle, il y a an overload of Html.RenderPartial() vous pouvez donner à:

Html.RenderPartial("ControlPanel", model); 
+0

Je sais que :), donc vous dites que la meilleure approche consiste à utiliser une page maître fortement typée? – devfreak

+0

Ouais, en utilisant peut-être [cette méthode] (http://stackoverflow.com/questions/710499/asp-net-mvc-passing-strongly-typed-data-to-master-page/710774#710774). – svick

+0

Je l'aime, mais je ne veux pas lier tous mes modèles de vue à la vue du modèle de page maître (en hériter). Puis-je utiliser cette méthode sans la partie héritage? – devfreak

Questions connexes