Umbraco 10:在本地主机上检测浏览器/userAgent

Umbraco 10 : Detection of browser / userAgent on localhost

提问人:Jamaal 提问时间:9/12/2023 最后编辑:NimanthaJamaal 更新时间:10/25/2023 访问量:53

问:

我已经在本地安装了实例 V12。
我正在尝试检查移动设备和其他设备

我得到的错误消息是这样的:

编译处理此请求所需的资源时出错。请查看以下特定错误详细信息,并相应地修改源代码。

  • 名称“Request”在当前上下文中不存在

    • @if(Request.Browser.IsMobileDevice && !Request.UserAgent.Contains(“iPad”) && !Request.UserAgent.Contains(“平板电脑”))

我的代码:

@inherits Umbraco.Cms.Web.Common.Macros.PartialViewMacroPage;
@{
    var imageCrop = Model.MacroParameters["crop"].ToString();
}


<div class="heading">
        <div class="heading01">@Model.Content.Value("bannerTitle")</div>
        <div class="heading02">@Model.Content.Value("bannerSubtitle")</div>
</div>

@if(Model.Content.HasValue("videoLink"))
{
    <div class="play-video" data-fancybox href="@Model.Content.Value("videoLink")">
        <span>
            <svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 17 21">              
            <polygon points="16.9,10.5 0.1,21 0.1,0 "/>
            </svg>
        </span>
    </div>
}

<div class="overlay"></div>

@if(Request.Browser.IsMobileDevice && !Request.UserAgent.Contains("iPad") && !Request.UserAgent.Contains("Tablet"))
    {
        <img src="@Model.Content.GetCropUrl("bannerImage", "mobile")" class="img-fluid" alt="@Model.Content.Value("altTag")" />
    }
    else 
    {
        if(imageCrop == "crop")
        {
            <img src="@Model.Content.GetCropUrl("bannerImage", "crop")" class="img-fluid" alt="@Model.Content.Value("altTag")" />
        }
        else
        {
            <img src="@Model.Content.GetCropUrl("bannerImage", "full")" class="img-fluid" alt="@Model.Content.Value("altTag")" />
        }
    }

我错过了什么吗?

C# Razor LocalHost Umbraco

评论


答:

1赞 Jan Köhler 9/13/2023 #1

所以你正在尝试从 razor 视图中访问 Request 对象?

然后我认为这个问题与 umbraco(我真的不知道)无关,而是与一般 ASP.NET 剃刀视图有关。

正如错误所说(“名称'请求'在当前上下文中不存在”),它不知道“请求”是什么。因此,您无法直接访问它。但是,任何剃刀页面都允许你通过其属性访问 HttpContext(请参阅此处)。Context

所以你可以改变

@if(Request.Browser.IsMobileDevice ...

@if(Context.Request.Browser.IsMobileDevice ...