【问题标题】:How to get the final webpage title in ASP.net MVC?如何在 ASP.net MVC 中获取最终的网页标题?
【发布时间】:2018-06-06 22:12:23
【问题描述】:

我基本上想得到最终呈现的网页标题来执行访问统计。我们这里提到的网页标题是页面头部的

的值。 <p>有没有办法,一种优雅的方式来实现这一点?</p> <p>感谢您的帮助。</p>

【问题讨论】:

  • 定义“获取”。你想在哪里获得它?您可以通过始终呈现 &lt;title&gt;@ViewBag.Title&lt;/title&gt; 来扭转它,然后您可以从代码中访问它。
  • 但是如果我们不使用这种方法,因为每个人都可能在标签中随机设置一个手动字符串,那么我们如何实现呢?任何地方都可以,即。过滤器、处理程序等
  • 可以设置页面标题 ViewData["Title"] = "this is page one title";稍后可以在控制器中获取页面标题。字符串 a = ViewData["Title"];
  • 解释您的用例。是的,您可以在过滤器中扫描传出的 HTML,但您真的不想这样做。
  • 我基本上是在设计和开发一个支持多个模板的CMS引擎,这些模板可以由最终用户自定义。是的,扫描呈现的 HTML 是一种方式,但不是一种优雅的方式,所以我想知道是否还有其他更好的方式。

标签: asp.net-mvc webpage-rendering


【解决方案1】:

我想您可以使用 javascript 将标题发布到您的统计处理程序

$(function(){
   $.post("/Statistics/Log", {title = document.title});
})

并包括您想要记录的任何其他内容

【讨论】:

  • 理论上用户可以随时修改文档标题。而且通过重复调用此端点来记录比实际发生的访问次数更多的访问,它也很容易被滥用。
  • 感谢 Jamie,这是一个聪明的解决方案。但它仍然有一些限制,即。如果最终用户从视图模板中删除代码,则 CMS 作为产品可能会失去基本功能。
  • @Jonathan 这将在您的布局页面中,其中包含您的视图模板,与您的菜单、页眉和页脚相同。最终用户不应该看到它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-11
  • 1970-01-01
  • 1970-01-01
  • 2020-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多