web-dev-qa-db-ja.com

MVC-5を使用してビューページにメタタグを追加する

_Layout.cshtmlマスターページに2つのメタタグがあり、someone.cshtmlビューページにメタタグを追加したいと思います。

そして私もこのコードを試してみます

_layout.cshtmlマスターページに配置@RenderSection("metatags",false);

@section metatags { <meta ... /> }のようにsomeone.cshtmlに挿入

しかし成功しない。

また、メタタグjqueryを追加してみますが、うまくいきませんでした。

13
Jatin Gadhiya

私は今のところうまくいく方法を見つけました。

このソリューションは、主に複数のマスターページで使用されます。

コントローラ/アクションで、そのビューに必要なメタ情報を割り当てます。

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" />
    }
11
Jatin Gadhiya

うまくいくはずです。

これが私のマスターページです_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>
43
meziantou

ネストされたレイアウトを使用している場合は、次のガイドラインに従う必要があります。

ネストされたかみそりテンプレートの@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コードには、このためのサンプルがたくさんあります。

1
Marco Regueira

ここ は、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>
0
Mazdak Shojaie