ASP.NET MVCでページのメタタグを渡す方法は?
-
02-07-2019 - |
質問
ここ数日間、ASP.NET MVCで遊んでいて、小さなサイトを構築することができました。すべてがうまく機能します。
今、ViewDataを介してページのMETAタグ(タイトル、説明、キーワードなど)を渡す必要があります。 (マスターページを使用しています)。
これにどう対処していますか?よろしくお願いします。
解決
現在、私がどのようにやっているのか...
マスターページには、デフォルトのタイトル、説明、およびキーワードを含むコンテンツプレースホルダーがあります:
<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 [&quot; PageTitle&quot;])に入れるか、モデルに含め(ViewData.Model.MetaDescription-ブログの投稿などで意味があります)、データ駆動型にすることができます。
他のヒント
それをあなたのviewdataに入れてください!次のようなことをしてください...
BaseViewData.cs-これは、他のすべてのビューデータクラスが継承するビューデータクラスです
public class BaseViewData
{
public string Title { get; set; }
public string MetaKeywords { get; set; }
public string MetaDescription { get; set; }
}
次に、Site.Master(またはその他の)クラスを次のように定義する必要があります。
public partial class Site : System.Web.Mvc.ViewMasterPage<BaseViewData>
{
}
Site.Masterページにあるのは、単に
<title><%=ViewData.Model.Title %></title>
<meta name="keywords" content="<%=ViewData.Model.MetaKeywords %>" />
<meta name="description" content="<%=ViewData.Model.MetaDescription %>" />
そして、あなたは笑って離れています!
HTH、 チャールズ
その後、このアイデアを拡張できます。ユーザー(IPrincipal)クラスのゲッターをLoggedInBaseViewDataクラスに入れます。
所属していません StackOverflow