仅当 cookie 存在时,如何在剃须刀页面中添加 HTML?
Posted
技术标签:
【中文标题】仅当 cookie 存在时,如何在剃须刀页面中添加 HTML?【英文标题】:How do you add HTML in a razor page only if a cookie exists? 【发布时间】:2021-12-19 13:08:28 【问题描述】:目标
如标题中所述,我希望注入一些 html,它会加载 Google Analytics,它仅在用户接受 cookie 并且设置了特定 cookie 并且为 true 时才会激活。 我遵循了这些答案:Check if Cookie Exists
我的尝试
@
using System.Net.Http;
if (HttpContext.Current.Response.Cookies.AllKeys.Contains("cookieNameHere"))
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=idhere"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag()dataLayer.push(arguments);
gtag('js', new Date());
gtag('config', 'G-codehere');
</script>
错误
它抱怨 HttpContext,说它在当前上下文中不可用,因此我尝试导入它但无济于事......
【问题讨论】:
避免在您的视图中访问HttpContext
。相反,您的 ViewModel
应该是一个独立的对象,其中包含视图呈现所需的所有数据。
如果您使用的是 ASP.NET Core,那么 HttpContext.Current
完全错误 - 您从哪里得到应该使用它的想法?
您已对您的问题应用了多个相互冲突的标签。请说明您实际上是 ASP.NET Core 还是 ASP.NET MVC(又名 ASP.NET 3.5 或 4.x)?
我从浏览 *** 中得到了这个想法。我删除了 MVC 标签,我使用的是 .NET 6、ASP.NET Core
请发布您的Controller
的操作方法,以及您的ViewModel
类定义。
【参考方案1】:
删除不需要的using
并简单地使用if (Context.Request.Cookies.ContainsKey("cookieNameHere"))
:
@
if (Context.Request.Cookies.ContainsKey("cookieNameHere"))
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=idhere"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag()dataLayer.push(arguments);
gtag('js', new Date());
gtag('config', 'G-codehere');
</script>
【讨论】:
以上是关于仅当 cookie 存在时,如何在剃须刀页面中添加 HTML?的主要内容,如果未能解决你的问题,请参考以下文章