ここ数日、ASP.NET MVC で遊んでいて、小さなサイトを構築することができました。すべてがうまく機能します。
ここで、ViewData を介してページの META タグ (タイトル、説明、キーワードなど) を渡す必要があります。(私はマスターページを使用しています)。
これをどのように処理していますか?前もって感謝します。
ここ数日、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["PageTitle"]) に入れるか、モデルに含め (ViewData.Model.MetaDescription - ブログ投稿などに適しています)、データ駆動型にすることができます。
ビューデータに入れてください!次のようなことをしてください...
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、チャールズ
Ps。次に、このアイデアを拡張できます。たとえば、ユーザー (IPrincipal) クラスへのゲッターを LoggedInBaseViewData クラスに配置します。