为什么我不能在自己的类中访问 UmbracoHelper



我正在尝试在自己的课堂上从Umbraco获取图像。

我不明白为什么我不能在课堂上使用@umbraco助手。我在类中定义了它的命名空间,例如:

using Umbraco.Core.Models;
using Umbraco.Web;

我只能使用UmbracoHelper,当我写:

var umbracoHelper = new UmbracoHelper(Umbraco.Web.UmbracoContext.Current);

这是我的班级:

using Umbraco.Core.Models;
using Umbraco.Web;
namespace House.Site.Helpers
{
    public static class ImageClass
    {
        public static string GetAbsoluteImageUrl(this IPublishedContent node, string propertyName)
        {
            var umbracoHelper = new UmbracoHelper(Umbraco.Web.UmbracoContext.Current);
            var imgID = node.GetPropertyValue<string>("propertyName");
            var imgObject = umbracoHelper.TypedMedia(imgID);
            return imgObject.Url;
        }
    }
}

由于您的类不是从任何 Umbraco 基类继承的,因此您必须自己实例化 UmbracoHelper。

为此,请使用:

var umbracoHelper = new UmbracoHelper(UmbracoContext.Current)

非常好,可以让您获得所需的内容。

您应该能够只使用 UmbracoContext.Current 而不是完整的命名空间和类名,因为您已经有了 Umbraco.Webusing 语句。

因为您需要一个帮助程序的实例才能使用它。您必须按照所示实例化它,因为它依赖于有效的 UmbracoContext,而该上下文又需要有效的 HTTP 上下文。在视图中使用帮助程序时,这已经为您处理好了,并且通过视图继承的类提供了实例。

您可以在 Umbraco

文档中阅读有关此内容的更多详细信息,该文档有关对 Web 请求实例(例如 UmbracoHelper)的静态引用。

相关内容

  • 没有找到相关文章

最新更新