質問

ここ数日間、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クラスに入れます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top