I'm playing with ASP.NET MVC for the last few days and was able to build a small site. Everything works great.
Now, I need to pass the page's META tags (title, description, keywords, etc.) via the ViewData. (i'm using a master page).
How you're dealing with this? Thank you in advance.
Here is how I am currently doing it...
In the masterpage, I have a content place holder with a default title, description and keywords:
<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>
And then in the page, you can override all this content:
<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>
This should give you an idea on how to set it up. Now you can put this information in your ViewData (ViewData["PageTitle"]) or include it in your model (ViewData.Model.MetaDescription - would make sense for blog posts, etc) and make it data driven.
Put it in your viewdata! Do something like the following...
BaseViewData.cs - this is a viewdata class that all other viewdata classes will inherit from
public class BaseViewData
{
public string Title { get; set; }
public string MetaKeywords { get; set; }
public string MetaDescription { get; set; }
}
Then your Site.Master (or whatever) class should be defined as follows:
public partial class Site : System.Web.Mvc.ViewMasterPage<BaseViewData>
{
}
Now in your Site.Master page simply have
<title><%=ViewData.Model.Title %></title>
<meta name="keywords" content="<%=ViewData.Model.MetaKeywords %>" />
<meta name="description" content="<%=ViewData.Model.MetaDescription %>" />
And you're away laughing!
HTHs, Charles
Ps. You can then expand on this idea, e.g. put a getter to your User (IPrincipal) Class into a LoggedInBaseViewData class.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With