ビューからページのセクションにメタタグをレンダリングする必要があります。たとえば、ビューにはすべての製品情報が含まれています。製品情報をヘッドに追加したいのですが、これには製品ページからしかアクセスできません。
誰かアイデアはありますか?
ありがとう
ビューからページのセクションにメタタグをレンダリングする必要があります。たとえば、ビューにはすべての製品情報が含まれています。製品情報をヘッドに追加したいのですが、これには製品ページからしかアクセスできません。
誰かアイデアはありますか?
ありがとう
レイアウトで、頭にセクションを定義します。RenderSection
ヘルパーメソッドを使用してこれを行うことができます。
オプションのコンテンツセクションをレイアウトページにレンダリングする場合は、このメソッドを使用しRenderSection
ます。したがって、このようにレイアウトを更新します
<head>
<title>@ViewBag.Title</title>
<script src="@Url.Content("~/Scripts/jquery.min.js")" type="text/javascript" />
@RenderSection("MetaContent", false)
</head>
<body>
@RenderBody()
</body>
これで、ページ/ビューで、このセクションのコンテンツを渡すことができます。ビューモデル/ベースビューモデルに新しいプロパティを追加して、メタディスクリプションを保持します。したがって、GET Actionメソッドでは、MetaDescription
プロパティ値を設定します。
そして、あなたのビューでは、ProductViewModelに強く型付けされています
@model ProductViewModel
<h1>@Model.ProductName</h1>
<div>@Model.ProductDesc</div>
@section MetaContent
{
<meta name="description" content="@Model.MetaDescription" />
}
レイアウトでセクションを定義するとき、false
2番目のパラメーター値として使用しました。つまり、このセクションは必須ではありません。すべてのビュー/ページからメタ情報を渡す必要はありません。
セクションとレイアウトに関するScottguのブログ投稿をチェックしてください。
セクションの定義と使用を検討してください。セクションを使用すると、ビューから他の領域に書き込むことができます。
または、ViewBagでメタタグアイテムを定義し、ヘッドのViewBag.Metaをメタタグとして書き出し、そのViewBagプロパティをコントローラーに入力します。順序は正常に機能します。