我正在尝试在自己的课堂上从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.Web
的 using
语句。
因为您需要一个帮助程序的实例才能使用它。您必须按照所示实例化它,因为它依赖于有效的 UmbracoContext,而该上下文又需要有效的 HTTP 上下文。在视图中使用帮助程序时,这已经为您处理好了,并且通过视图继承的类提供了实例。
您可以在 Umbraco文档中阅读有关此内容的更多详细信息,该文档有关对 Web 请求实例(例如 UmbracoHelper)的静态引用。