_Layout.cshtmlマスターページに2つのメタタグがあり、someone.cshtmlビューページにメタタグを追加したいと思います。
そして私もこのコードを試してみます
_layout.cshtmlマスターページに配置@RenderSection("metatags",false);
@section metatags { <meta ... /> }
のようにsomeone.cshtmlに挿入
しかし成功しない。
また、メタタグjqueryを追加してみますが、うまくいきませんでした。
私は今のところうまくいく方法を見つけました。
このソリューションは、主に複数のマスターページで使用されます。
コントローラ/アクションで、そのビューに必要なメタ情報を割り当てます。
ViewBag.Title = "some title";
ViewBag.MetaDescription = "some description";
ビューまたはマスターページで、そのビューに必要なメタ情報を取得します。
@if(ViewBag.MetaDescription != null)
{
<meta name="description" content="@ViewBag.MetaDescription" />
}
@if(ViewBag.MetaKeywords != null)
{
<meta name="keywords" content="@ViewBag.MetaKeywords" />
}
うまくいくはずです。
これが私のマスターページです_Layout.cshtml
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
@RenderSection("metatags", false)
<title>My ASP.NET Application</title>
</head>
<body>
@RenderBody()
</body>
</html>
index.cshtml
ファイル
@section metatags
{
<meta name="test" content="test"/>
<meta name="test2" content="test"/>
}
<div>Page content</div>
結果
<html>
<head>
<meta charset="utf-8">
<meta name="test" content="test">
<meta name="test2" content="test">
<title>My ASP.NET Application</title>
</head>
<body>
<div>Page content</div>
</body>
</html>
ネストされたレイアウトを使用している場合は、次のガイドラインに従う必要があります。
ネストされたかみそりテンプレートの@RenderSection
使用しているテクニックはうまくいくはずですが、うまくいかない場合、それが理由かもしれません。
しかし、あなた自身の答えの意図された使用法を見ると、キーワードと説明タグを変更する必要があるだけなら、そのためのNopCommreceにAPIがあります。
マスターレイアウト:
<meta name="description" content="@(Html.NopMetaDescription())" />
<meta name="keywords" content="@(Html.NopMetaKeywords())" />
クライアントのcshtmlファイル
@{
Html.AddMetaDescriptionParts(Model.MetaDescription);
Html.AddMetaKeywordParts(Model.MetaKeywords);
}
NopCommerceコードには、このためのサンプルがたくさんあります。
ここ は、asp.net mvcでメタタグを動的に作成する方法の良いサンプルです:
public string HomeMetaTags()
{
var strMetaTag = new StringBuilder();
strMetaTag.AppendFormat(@"<meta content='{0}' name='Keywords'/>","Home Action Keyword");
strMetaTag.AppendFormat(@"<meta content='{0}' name='Descption'/>", "Home Description Keyword");
return strMetaTag.ToString();
}
public ActionResult Index()
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
ViewBag.MetaTag = HomeMetaTags();
return View();
}
<head>
<title>@ViewBag.Title</title>
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
@Html.Raw(ViewBag.MetaTag)
</head>