2017-01-20 8 views
2

Я пытаюсь получить изображение из Umbraco в своем классе.Почему я не могу получить доступ к UmbracoHelper в своем классе

Я не могу понять, почему я не могу использовать помощник @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; 
     } 

    } 
} 

ответ

9

Так как ваш класс не наследуется от каких-либо базовых классов Umbraco, вам придется создавать экземпляр UmbracoHelper самостоятельно.

Делать это с помощью:

var umbracoHelper = new UmbracoHelper(UmbracoContext.Current) 

прекрасно подходит и получите доступ к тому, что вам нужно.

Вы должны иметь возможность использовать только UmbracoContext.Current вместо полного пространства имен и имени класса, поскольку у вас уже есть оператор using для Umbraco.Web.

0

Потому что вам нужен экземпляр помощника, прежде чем вы сможете его использовать. Вы должны создать экземпляр, как вы показали, потому что это зависит от действительного UmbracoContext, который, в свою очередь, нуждается в действительном HTTP-контексте. При использовании помощника в ваших представлениях об этом уже заботились о вас и экземпляре, доступном через класс, на который наследуется ваш взгляд.

Подробнее об этом можно прочитать в документации Umbraco по адресу Static references to web request instances (such as UmbracoHelper).