2017-01-20 6 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) 

완벽하게 괜찮 당신은 당신이 필요에 대한 액세스를 얻을 것이다.

Umbraco.Web에 대해 using 문이 이미 있으므로 전체 네임 스페이스 및 클래스 이름 대신 UmbracoContext.Current 만 사용할 수 있습니다.

0

도우미 인스턴스를 사용하려면 먼저 도우미 인스턴스가 필요합니다. 차례대로 올바른 HTTP 컨텍스트가 필요한 유효한 UmbracoContext에 의존하기 때문에 표시된대로 인스턴스화해야합니다. 뷰에서 도우미를 사용할 때 이미 뷰어가 상속 받고 뷰에서 상속받은 클래스를 통해 사용 가능한 인스턴스가 처리됩니다.

자세한 내용은 Umbraco 설명서 Static references to web request instances (such as UmbracoHelper)에서 확인할 수 있습니다.