当前位置: 首页 > 知识库问答 >
问题:

ASP.NET mvc-不同的视图在布局页内的中需要不同的元标记

昝卓
2023-03-14

我想停止我的几个页面显示在搜索结果中。我的理解是,我将以下内容添加到页面的部分:

<meta name="robots" content="noindex,nofollow"/>

问题是我的页面使用了一个通用的布局页面。类似于:

@{
    Layout = "~/Views/Shared/_VanillaLayout.cshtml";
}

布局页面内部是head部分,包含大量链接、脚本和元标记。我不想为可索引和不可索引的页面重复这一点。

从我的研究中我发现:-

  • 有多个节是错误的。
  • 将robot meta标记放在head之外是不好的。
  • 使用robots.txt超出了我的需要,而且是错误的。
  • 试图将模型传递到布局中有点矫枉过正(需要所有模型都从某个基继承,而许多页面纯粹是表示,甚至没有模型),而且是不好的。

希望,我错过了一些东西,有一个好的(非坏的)方法来做到这一点,或者我上面提到的方法之一毕竟不是那么坏。

共有1个答案

徐卓
2023-03-14

在我看来,最简单的方法是在布局文件的标记中定义一个节,您可以选择在视图中填充数据

<head>
    <meta charset="utf-8" />
    <title>@ViewBag.Title - My ASP.NET MVC Application</title>
    <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
    <meta name="viewport" content="width=device-width" />
    <!-- Adding a RenderSection here, mark it as not required-->
    @RenderSection("AdditionalMeta", false)
    @Styles.Render("~/Content/css")
</head>

现在,在任何需要添加额外元数据的视图中,只需在视图文件的结尾/开头(在模型声明之后)添加以下代码

@section AdditionalMeta
{
    <meta name="robots" content="noindex,nofollow"/>
}

因为所有的Razor内容都是在服务器端处理的,所以在以下情况下不会有问题:a)如果某些爬虫不实现JS,JS附加项;b)不需要对tag/等进行后期附加。此外,标记为“不需要”意味着您只需要更新不想被索引的页面,并且不必在应用程序中的每个页面上设置变量。

 类似资料:
  • 在Xamarin中,我目前有两个不同的活动,我想将它们组合在一起并使用一个视页。 一个活动使用以下内容视图: 第二个活动使用以下内容视图: 提前致谢

  • 我目前正在尝试创建一个选项卡视图,其中每个选项卡打开不同的布局。我正在使用android.support.design.widget.TabLayout,并且我使用适配器成功地将其与pagerView链接起来。现在,在myFragment类中,如果我调用onCreateView并膨胀布局,则布局(fragment_main)将显示在所有选项卡中。 我有3个片段连接3个标签。现在如何为每个片段设置不

  • 我想知道在RecyclerView中实现页脚的正确方法是什么,它可以用来显示不同的视图。下面是几个例子 通过重新加载按钮查看网络错误。 查看从服务器加载数据时的进度条。 当没有更多可用数据时查看。 等等。 我遇到了https://stackoverflow.com/a/29168617/371557,其中提到我必须重写getItemViewType并在onCreateViewHolder中膨胀不同

  • 问题内容: 我了解到,要最大程度地提高Android列表视图的效率,您应该只拥有尽可能多的膨胀“行”视图以适合屏幕显示。视图移出屏幕后,应在您的方法中重用它,检查是否为null。 但是,当列表需要2种不同的布局时,如何实现此想法?可以说它的订单列表,其中一个布局用于已完成的订单,另一个布局用于在处理中的订单。 这是我的代码正在使用的想法的示例教程。就我而言,我将有2行布局:和 问题答案: 您需要让

  • 我使用列表中的子元素实现了一个可扩展的recyclerview。我遵循了这个准则。这就是它的工作原理, 下面简要描述使用RecyclerView实现ExpandableListView。列表模型有一个附加参数“type”,用于标识项目是标题还是子项。通过检查此参数,适配器将根据类型为view和viewholder充气。如果类型为HEADER,它将扩展HEADER项的布局,其中包含一个TextVie

  • 我想知道我们是否可以有一个布局不同于其父JFrame的JPanel。例如。如果我有JFrame与边框布局,我们有一个JPanel嵌入到它,它有不同的布局。有可能吗? 我正在努力做这件事。但是这样JPanel的组件就不会显示出来了。