Как передать мета-теги страницы в ASP.NET MVC?
-
02-07-2019 - |
Вопрос
Последние несколько дней я играю с ASP.NET MVC и смог создать небольшой сайт.Все работает отлично.
Теперь мне нужно передать МЕТА-теги страницы (title, description, ключевые слова и т.д.) Через ViewData.(я использую главную страницу).
Как ты справляешься с этим?Заранее благодарю вас.
Решение
Вот как я сейчас это делаю...
На главной странице у меня есть держатель для размещения контента с заголовком по умолчанию, описанием и ключевыми словами:
<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>
И затем на странице вы можете переопределить все это содержимое:
<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>
Это должно дать вам представление о том, как его настроить.Теперь вы можете поместить эту информацию в свои ViewData (ViewData["PageTitle"]) или включить ее в свою модель (ViewData.Model.MetaDescription - имело бы смысл для записей в блоге и т.д.) И сделать его управляемым данными.
Другие советы
Поместите это в свои viewdata!Сделайте что-то вроде следующего...
BaseViewData.cs - это класс viewdata, от которого наследуют все остальные классы viewdata
public class BaseViewData
{
public string Title { get; set; }
public string MetaKeywords { get; set; }
public string MetaDescription { get; set; }
}
Затем ваш сайт.Мастер-класс (или любой другой) должен быть определен следующим образом:
public partial class Site : System.Web.Mvc.ViewMasterPage<BaseViewData>
{
}
Теперь на вашем сайте.На главной странице просто есть
<title><%=ViewData.Model.Title %></title>
<meta name="keywords" content="<%=ViewData.Model.MetaKeywords %>" />
<meta name="description" content="<%=ViewData.Model.MetaDescription %>" />
А ты сидишь и смеешься!
Привет, Чарльз
Ps.Затем вы можете развить эту идею, напримерпоместите средство получения для вашего класса User (IPrincipal) в класс LoggedInBaseViewData.