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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top