2017-01-20 5 views
2

自分のクラスでUmbracoから画像を取得しようとしています。自分のクラスでUmbracoHelperにアクセスできない理由

私のクラスで@umbracoヘルパーを使用できない理由を理解できません。私が書くとき、私は、UmbracoHelperを使用することができます

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

:私は、その名前空間のような、クラスで定義されている。ここ

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.Webusingステートメントが既にあるので、完全な名前空間とクラス名の代わりにUmbracoContext.Currentを使用することができます。

0

ヘルパーのインスタンスを使用する前に、そのインスタンスを使用する必要があるためです。有効なUmbracoContextに依存し、有効なHTTPコンテキストが必要であるため、これをインスタンス化する必要があります。あなたのビューでヘルパーを使用するとき、これはすでにあなたとあなたのビューから継承するクラスを介して利用可能になったインスタンスの世話をしています。

この詳細については、UmbracoのドキュメントStatic references to web request instances (such as UmbracoHelper)で読むことができます。

関連する問題