Quelle est la manière la plus «recommandée» de gérer un partiel apparaissant sur de nombreuses vues et qui nécessite également un modèle viewmodel (supposons qu'il doive obtenir certaines données d'un DB).MVC Partials/Controls nécessitant des données
Répondre
Dans la nouvelle infrastructure ASP.NET MVC 2, vous pouvez utiliser la méthode Html.RenderAction(). Cela vous permet d'appeler une action de la vue, et obtenir la vue générée à l'intérieur de votre vue: http://www.davidhayden.me/2009/11/htmlaction-and-htmlrenderaction-in-aspnet-mvc-2.html
Le MvcContrib-projet a quelque chose appelé Subcontroller, ce qui vous donne essentiellement les mêmes fonctionnalités: http://jeffreypalermo.com/blog/mvccontrib-latest-release-now-with-subcontroller-support/
Il suffit de mettre ce vue partielle dans le dossier Views/Shared et accessible par n'importe quelle autre vue.
Si vous utilisez le modèle ViewModel, vous pouvez composer votre ModelView avec l'objet requis par cette vue partielle. Comme ceci:
public class MyPartialViewViewModel
{
// my properties here
}
public class MyView1ViewModel
{
public MyPartialViewViewModel Partial {get; private set;}
public MyView1ViewModel(MyPartialViewViewModel partial)
{
this.Partial = partial;
}
}
Et puis vous avez juste à passer la propriété partielle à votre vue partielle.
J'aime ça !!! – AxelEckenberger
En utilisant Html.RenderAction(), dans quel contrôleur appelez-vous? – Bobbie
autant que je peux voir, vous appelez dans le contrôleur actuel. Pour appeler un autre contrôleur, vous pouvez donner un paramètre supplémentaire à la méthode RenderAction, avec le nom: Html.RenderAction ("ActionName", "ControllerName") – Pbirkoff