使用MVC-5在View页面中添加Meta标签

时间:2014-04-21 11:35:12

标签: asp.net-mvc-5 nopcommerce

我在_Layout.cshtml母版页中有两个元标记,现在我想在someone.cshtml视图页面中添加元标记。

我也尝试使用此代码

放入_layout.cshtml母版页@RenderSection("metatags",false);

输入像@section metatags { <meta ... /> }

这样的someone.cshtml

但没有成功。

并尝试使用添加元标记jquery但不能正常工作。

4 个答案:

答案 0 :(得分:38)

它应该有用。

这是我的母版页_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>

答案 1 :(得分:10)

我找到了一种适用于现在的方法。

此解决方案主要用于多个母版页。

在controllers / action中分配该视图所需的任何元信息。

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" />
    }

答案 2 :(得分:1)

如果使用嵌套布局,则需要遵循以下准则:

@RenderSection in nested razor templates

你正在使用的技术应该有效,如果不是,可能就是这个原因。

但是看看你自己的答案中的预期用途,如果你只需要修改关键字和描述标签,那么NopCommrece中就会有api。

在主布局中:

<meta name="description" content="@(Html.NopMetaDescription())" />
<meta name="keywords" content="@(Html.NopMetaKeywords())" />

并在客户端cshtml文件中

@{
    Html.AddMetaDescriptionParts(Model.MetaDescription);
    Html.AddMetaKeywordParts(Model.MetaKeywords);
}

NopCommerce代码中有大量示例。

答案 3 :(得分:0)

here是如何在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>