Come passare i meta tag della pagina in ASP.NET MVC?
-
02-07-2019 - |
Domanda
Sto giocando con ASP.NET MVC negli ultimi giorni e sono stato in grado di creare un piccolo sito. Funziona tutto alla grande.
Ora, devo passare i tag META della pagina (titolo, descrizione, parole chiave, ecc.) tramite ViewData. (sto usando una pagina principale).
Come hai a che fare con questo? Grazie in anticipo.
Soluzione
Ecco come lo sto facendo attualmente ...
Nella pagina principale, ho un segnaposto di contenuto con titolo, descrizione e parole chiave predefiniti:
<head>
<asp:ContentPlaceHolder ID="cphHead" runat="server">
<title>Default Title</title>
<meta name="description" content="Default Description" />
<meta name="keywords" content="Default Keywords" />
</asp:ContentPlaceHolder>
</head>
E poi nella pagina, puoi sovrascrivere tutto questo contenuto:
<asp:Content ID="headContent" ContentPlaceHolderID="cphHead" runat="server">
<title>Page Specific Title</title>
<meta name="description" content="Page Specific Description" />
<meta name="keywords" content="Page Specific Keywords" />
</asp:Content>
Questo dovrebbe darti un'idea su come configurarlo. Ora puoi inserire queste informazioni nel tuo ViewData (ViewData [" PageTitle "]) o includerle nel tuo modello (ViewData.Model.MetaDescription - avrebbe senso per i post sul blog, ecc.) E renderle guidate dai dati.
Altri suggerimenti
Mettilo nel tuo viewdata! Fai qualcosa di simile al seguente ...
BaseViewData.cs: questa è una classe viewdata che tutte le altre classi viewdata erediteranno
public class BaseViewData
{
public string Title { get; set; }
public string MetaKeywords { get; set; }
public string MetaDescription { get; set; }
}
Quindi la tua classe Site.Master (o qualunque altra) dovrebbe essere definita come segue:
public partial class Site : System.Web.Mvc.ViewMasterPage<BaseViewData>
{
}
Ora nella tua pagina Site.Master semplicemente
<title><%=ViewData.Model.Title %></title>
<meta name="keywords" content="<%=ViewData.Model.MetaKeywords %>" />
<meta name="description" content="<%=ViewData.Model.MetaDescription %>" />
E sei via a ridere!
HTHS, Charles
Ps. È quindi possibile espandere questa idea, ad es. inserisci un getter nella tua classe User (IPrincipal) in una classe LoggedInBaseViewData.