【问题标题】:Can't get media image URL from Umbraco after upgrade升级后无法从 Umbraco 获取媒体图像 URL
【发布时间】:2017-08-01 14:33:10
【问题描述】:

我最近升级到 7.6.3,但在我的视图中检索媒体图像 URL 时遇到问题。为了测试目的,我为其中一个节点添加了一个新的MediaPicker2 属性,为其设置了一个值并尝试在我的剃刀视图中获取它的值:

var icon2 = Model.Content.GetProperty("icon2");

然后对象看起来像这样:

执行Model.Content.GetPropertyValue("icon2")会抛出以下错误:

Umbraco.Core.dll 中出现“System.Exception”类型的异常,但未在用户代码中处理

附加信息:创建值时出现异常。

InnerException:“对象引用未设置为对象的实例。”

Model.Content.GetPropertyValue<IPublishedContent>("icon2") 抛出同样的错误。

我做错了什么?

【问题讨论】:

  • 在 umbracoSettings.config 中 EnablePropertyValueConverters 设置为 false 还是 true?
  • 设置为真。
  • 你是从哪个版本的 Umbraco 升级而来的?
  • 我认为你有一些 dll 可能来自 PropertyValueConverter 插件或来自拙劣的升级

标签: umbraco upgrade media


【解决方案1】:

根据this answer,您所做的是正确的。但是,我不确定为什么它不起作用。

不过,我之前回答过类似的问题,I found a roundabout way of getting the node for a Udi

您可以使用以下代码从图像字符串中获取 IPublishedContent:

// Your string.
var imageString = Model.Content.GetPropertyValue<string>("icon2");

// Get the guid from this string.
var imageGuidUdi = GuidUdi.Parse(imageString);

// Get the ID of the node!
var imageNodeId = ApplicationContext.Current.Services.EntityService.GetIdForKey(guidUdi.Guid, (UmbracoObjectTypes)Enum.Parse(typeof(UmbracoObjectTypes), guidUdi.EntityType, true));

// Finally, get the node.
var imageNode = Umbraco.TypedMedia(imageNodeId.Result);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多