J'ai beaucoup de vues avec beaucoup de contenu sur mon site ASP.NET MVC 2. Ceux-ci contiennent plusieurs modèles HTML qui se reproduisent. Lors de l'utilisation de formulaires Web ASP.NET, une classe dérivée de WebControl peut encapsuler ces modèles. Je voudrais quelques conseils sur la bonne approche pour ce problème avec MVC.Comment faire pour résumer des extraits courants de balisage avec ASP.NET MVC
Explication détaillée
modèles peu comme le donjon balisage HTML suivant se produire tout au long de ces vues. Le balisage rend dans un endroit isolé une boîte de contenu:
<div class="top container">
<div class="header">
<p>The title</p>
<em>(and a small note)</em>
</div>
<div class="simpleBox rounded">
<p>This is content.</p>
<p><strong>Some more content</strong></p>
</div>
</div>
Ceci est un exemple trivial, mais il y a des motifs récurrents plus complexes. Dans ASP.NET WebForms j'aurais abstraire tel code dans un WebControl (disons que je l'ai nommé BoxControl), d'être mis sur une page comme celle-ci:
<foo:BoxControl runat="server">
<Header>The title</Header>
<Note>(and a small note)</Header>
<Content>
<p>This is content.</p>
<p><strong>Some more content</strong></p>
</Content>
</foo:BoxControl>
Cette abstraction permet d'adapter facilement la manière la boîte est construite sur tout le site, en modifiant simplement la source BoxControl. Il conserve également le contenu HTML statique de manière cohérente dans la page de visualisation, même en combinant plusieurs BoxControls sur une page. Un autre avantage est que le code HTML utilisé comme contenu est reconnu par l'EDI, fournissant ainsi une coloration syntaxique/vérification. Pour ma compréhension, les WebControls sont déconseillés dans ASP.NET MVC. Au lieu d'un WebControl, je pourrais accomplir l'abstraction avec une vue partielle. Une telle vision serait alors incluse dans une vue page comme suit:
<%= Html.Partial("BoxControl", new {
Header="The Title",
Note="(and a small note)",
Content="<p>This is content.</p><p><strong>Some more content</strong></p>"});
%>
Ce n'est pas idéal, car le paramètre « Contenu » pourrait devenir très long, et l'IDE ne traite pas comme HTML lorsqu'il est passé de cette façon .
Solutions Considéré comme ViewModels fortement typées peuvent être transmis à l'appel Html.Partial au lieu des longs paramètres indiqués ci-dessus. Mais alors je devrais extraire le contenu d'un autre endroit (un CMS ou un fichier de ressources). Je voudrais que le contenu soit contenu dans la page de vue.
J'ai également considéré the solution proposed by Jeffrey Palermo, mais cela signifierait beaucoup de fichiers supplémentaires dispersés dans le projet. Je souhaite que le contenu textuel d'une vue soit limité à un seul fichier.
Ne devrais-je pas supprimer le balisage? Ou y a-t-il peut-être une approche, adaptée à MVC, que je néglige ici? Quel est l'inconvénient de «pécher» en utilisant un WebControl?
Je relis votre que stion et je pense que @ RPM1984 est probablement le meilleur moyen d'y aller –