Existe-t-il un moyen d'accéder par programme et de modifier la section <head>
de la page dans ASP.NET MVC? Je dois mettre à jour les balises <meta>
de la page en fonction des données affichées par l'utilisateur sur une page donnée.Comment modifier les éléments <head> par programmation?
Répondre
Vous pouvez utiliser un espace réservé de contenu dans la page principale qui vous substituez dans chaque vue:
<head>
<title>
<asp:ContentPlaceHolder ID="TitleContent" runat="server" />
</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<asp:ContentPlaceHolder ID="Metas" runat="server" />
...
et dans la vue:
<asp:Content ID="IndexMetas" ContentPlaceHolderID="Metas" runat="server">
<meta name="keywords" content="some keywords specific to the view" />
</asp:Content>
Essayez:
<meta name="description" content="<%: Model.Meta %>" />
Juste pour noter, en utilisant la deuxième approche, vous aurez probablement besoin de créer un BaseViewModel pour l'utiliser plus efficacement. – Ahmad
HttpContext.Current.Response.Headers renvoie en fait une collection des en-têtes http de la réponse. Cela n'a rien à voir avec l'élément html
. –En ASP.NET 4.0 il existe plusieurs nouvelles propriétés de la page que vous pouvez utiliser pour définir des méta-tags directement comme ceci:
Page.MetaKeywords = "asp.net,c#";
Page.MetaDescription = "This is my stackoverflow post";
Vous pouvez en savoir plus sur eux ici http://weblogs.asp.net/dotnetstories/archive/2010/03/23/asp-net-4-0-meta-tags-and-search-engine-optimisation.aspx
Utilisez la suggestion de la combinaison de Darin et Jakub pour obtenir le meilleur résultat à savoir. Créez le conteneur de contenu sur votre page maître et utilisez une approche BaseViewModel. le résultat ' asp: Content> ' –
Ahmad