Je travaille sur une bibliothèque de ressources composites d'exécution pour ASP.NET WebForms/MVC. Je supporte les WebForms ASP.NET standard via WebControls et j'ai récemment ajouté la prise en charge des ASP MVC Html Helpers. Une fonctionnalité que je supporte actuellement avec WebForms WebControls est le concept de définitions de ressources "Partielles" où une ressource peut être combinée sur les pages Maître/Vue.Aide sur la conception d'API HtmlHelper ASP.NET MVC
Lors de la mise en œuvre de l'équivalent MVC, je ne suis pas sûr de ce que le meilleur la pratique est? Je me penche actuellement vers un quelque chose de conception comme:
Maître page
<% using (Html.CreateCompositeResourcePartContext())
{
Html.CompositeCssResourcePart(
"ResourceName",
new[] { "/Styles/SharedStyle1.css", "/Styles/SharedStyle2.css" }
);
%>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
<% } %>
qui va créer une enveloppe « contexte » autour de la tête ContentPlaceHolder.
Voir la page
<asp:Content ID="HeadContentPlaceholder" ContentPlaceHolderID="head" runat="server">
<% Html.CompositeCssResourcePart(
"ResourceName",
new[]
{
"/Styles/PageStyle5.css",
"/Styles/PageStyle6.css",
"/Styles/PageStyle7.css"
}) %>
</asp:Content>
Donc, toutes les pages de vue peut étendre la définition de ressource partielle comme on le voit ci-dessus.
Les questions que j'ai:
1) Contrairement à tous mes autres HtmlHelpers, ces extensions n'écrivent pas immédiatement le fragment HTML, mais plutôt attendre que le contexte est disposé. Ces extensions doivent-elles être désactivées à la place de ViewContext (ou d'un autre objet)?
2) Personnellement, je pense que le concept d'un «usage» a du sens pour emballer un bloc de code plutôt que des appels distincts BeginCompositeResourcePartContext/EndCompositeResourcePartContext, seriez-vous d'accord? Si non, quoi de mieux sur les appels de méthode séparés?
Tout commentaire sur ce qui précède serait grandement apprécié. Si plus de détails sont requis, s'il vous plaît faites le moi savoir.
Modifier
Pour clarifier ... le bloc intérieur de la tête de la page principale et la référence suivante dans le côté d'une page de vue sera combiné ensemble pour une seule ressource. Ainsi, lorsque le contexte de CompositeResourcePartContext est disposé, tous les fichiers SIX sont combinés en un seul fichier css et écrit comme un seul lien TAG (ou d'un script, sprite css, etc.)
<link rel="stylesheet" type="text/css" href="/MyMergedStyleSheet.css" />
Je ne suis pas sûr de ce que cette aide vous achète. N'est-ce pas ce que les espaces réservés pour le contenu sont en premier lieu? –
@John - L'idée est que chaque appel à Html.CompositeCssResourcePart définira une partie d'une ressource composite (c'est-à-dire, sera fusionné dans un seul fichier lorsque le contexte est éliminé). En tant que tel, j'ai besoin d'une méthode de collecte de toutes les parties avant qu'un tag de lien/script puisse être rendu car l'URL est générée à partir de toutes les ressources référencées. Logique? –
'utiliser 'est logique dans ce contexte, mais je ne peux pas commenter au-delà de cela. –