9

ここ数日、ASP.NET MVC で遊んでいて、小さなサイトを構築することができました。すべてがうまく機能します。

ここで、ViewData を介してページの META タグ (タイトル、説明、キーワードなど) を渡す必要があります。(私はマスターページを使用しています)。

これをどのように処理していますか?前もって感謝します。

4

2 に答える 2

20

これが私が現在やっている方法です...

マスターページには、デフォルトのタイトル、説明、およびキーワードを含むコンテンツ プレース ホルダーがあります。

<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 - ブログ投稿などに適しています)、データ駆動型にすることができます。

于 2008-09-27T17:45:31.657 に答える
13

ビューデータに入れてください!次のようなことをしてください...

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 クラスに配置します。

于 2008-09-29T04:19:28.177 に答える