Mvc部分不是在头部而是在体内呈现

时间:2017-11-09 19:11:06

标签: razor asp.net-core asp.net-core-tag-helpers

我在_Layout的head部分遇到了@RenderSection的奇怪行为。

@section AddToHead{ 
    <meta name="test" />
    <open-graph og-title="@Model.Test.OG.Title" og-image="@Model.Test.OG.Image" og-url="@Model.Test.OG.Url" og-type="@Model.Test.OG.Type"></open-graph>
}
  1. meta =&gt;是普通的HTML
  2. open-graph =&gt;是一个返回html的taghelper
  3. 并添加到_Layout

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        @await RenderSectionAsync("AddToHead", required: false)
    </head>
    

    我已经尝试使用RenderSectionAsync和RenderSection。没有区别。

    当我在页面上检查结果时,它如下(总结果不同)

    查看源代码

    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    
        <meta name="test" />
        <div><meta property='og:title' content='TestTitle' /><meta property='og:type' content='Article' /><meta property='og:url' content='TestURL' /><meta property='og:image' content='TestBild' /></div>
    </head>
    

    开发人员工具

    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    
        <meta name="test" />
    
    </head>
    <body>
      <div><meta property='og:title' content='TestTitle' /><meta property='og:type' content='Article' /><meta property='og:url' content='TestURL' /><meta property='og:image' content='TestBild' /></div>
    </body>
    

    Facebook看到我的网站就像开发者工具那样。

    我做错了什么?这甚至可能吗?

1 个答案:

答案 0 :(得分:1)

开发者工具显示了浏览器如何解释您的HTML,这就是您在查看源代码和开发人员工具之间看到差异的原因。

至于为什么会发生这种情况,<div>中的<head>代码会出现问题。如今,大多数浏览器会将这些<div>标记解释为正文中的标记。如果您要渲染<meta />标签而没有周围的div,那么一切都应该没问题。