为什么我不能在自己的课堂上访问UmbracoHelper

时间:2017-01-20 05:40:14

标签: c# asp.net-mvc umbraco umbraco7

我想在自己班上从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;
        }

    }
}

2 个答案:

答案 0 :(得分:11)

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

使用以下方式:

var umbracoHelper = new UmbracoHelper(UmbracoContext.Current)

非常好,可以让您访问所需的内容。

您应该只能使用UmbracoContext.Current而不是完整的命名空间和类名,因为您已经拥有using的{​​{1}}语句。

答案 1 :(得分:0)

因为在使用之前需要帮助程序的实例。您必须按照显示的方式对其进行实例化,因为它依赖于有效的UmbracoContext,而UmbracoContext又需要有效的HTTP上下文。在您的视图中使用帮助程序时,已经为您处理了这个问题,并且通过您的视图继承的类提供了一个实例。

您可以在Static references to web request instances (such as UmbracoHelper)上的Umbraco文档中阅读有关此内容的更多详细信息。