2

ビューからページのセクションにメタタグをレンダリングする必要があります。たとえば、ビューにはすべての製品情報が含まれています。製品情報をヘッドに追加したいのですが、これには製品ページからしかアクセスできません。

誰かアイデアはありますか?

ありがとう

4

2 に答える 2

13

レイアウトで、頭にセクションを定義します。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" />
}

レイアウトでセクションを定義するとき、false2番目のパラメーター値として使用しました。つまり、このセクションは必須ではありません。すべてのビュー/ページからメタ情報を渡す必要はありません。

セクションとレイアウトに関するScottguのブログ投稿をチェックしてください。

于 2013-03-23T21:18:25.363 に答える
2

セクションの定義と使用を検討してください。セクションを使用すると、ビューから他の領域に書き込むことができます。

または、ViewBagでメタタグアイテムを定義し、ヘッドのViewBag.Metaをメタタグとして書き出し、そのViewBagプロパティをコントローラーに入力します。順序は正常に機能します。

于 2013-03-23T20:36:20.260 に答える