Umbraco 7 原型无法获取媒体 udi



我读过这些帖子

https://our.umbraco.org/forum/templates-partial-views-and-macros/85993-archetype-mediapicker-udi

https://our.umbraco.org/forum/using-umbraco-and-getting-started/85598-getting-image-url-from-media-picker-not-working-in-76

http://www.codeshare.co.uk/blog/how-to-get-the-file-path-of-a-media-item-in-umbraco/

但我仍然无法从媒体选择器获取值。

在我最后一次尝试时,我收到以下错误。

对象引用未设置为对象的实例

如果我尝试以下操作:

string img = "";
foreach (var d in archtypePanel.Properties)
{
if (d.Alias == "imageToDisplay")
{
img = d.Value.ToString();
}
}

我可以看到媒体UDI:"umb://media/15cc14d318f3444a86ab3bc7fc5787ad",但我无法进一步。

我现在遇到了一堵墙,所以任何解决这个问题的帮助都会有所帮助。

我的最后一次尝试如下:

Guid idValue = new Guid(id);
var blogPosts = CurrentPage;
IPublishedContent blogPosts2 = CurrentPage;
var archtypePanel = blogPosts2.GetPropertyValue<ArchetypeModel>("blogArchetypes").First(x=>x.Id == idValue);
ArchetypeWithTextAndImageModel model = new ArchetypeWithTextAndImageModel
{
TextContent = new HtmlString(archtypePanel.GetValue("textRichTextEditor")),
ImageId     = archtypePanel.GetValue<IEnumerable<IPublishedContent>>("imageToDisplay").ToString()// imgUrl
};

但是 ImageId 会抛出错误。

从强类型模型访问

确保您的本布拉科核心属性价值转换器已更新为最新版本

并且在umbracoSettings.config<EnablePropertyValueConverters>true</EnablePropertyValueConverters>也设置为 true

然后通过
archtypePanel.GetPropertyValue<IPublishedContent>("imageToDisplay").Url访问您的媒体网址

使用 udi 网址访问

另一种方法是使用您获得的 UDI URL 并获取以下媒体:

// Your string which is retrieved from Archetype.
var imageString = "umb://media/c33bfe07a82b4df18a79db154139cb91";
// 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);

有关此内容的更多信息,请查看Umbaco Archtype渲染图像(MediaPicker2(

你可以试试这个:

@using Umbraco.Web.Extensions
string HeaderImage = "umb://media/c740e797fc424980afb087769caf0917";
Udi udi;
if (Udi.TryParse(HeaderImage.ToString(), out udi))
{
var mediaItem = udi.ToPublishedContent();
string ImageURL = mediaItem.Url;
<div class="col-sm-3">
<img src="@ImageURL">
</div>
}

(来源(

下面的代码对我有用:

var countryUrl = "umb://document/72e07554a09d4d8ab6af7ad926c9a3c4";                   
var countryGuidUdi = GuidUdi.Parse(countryUrl);  
var countryNodeId = ApplicationContext.Current.Services.EntityService.GetIdForKey(countryGuidUdi.Guid, (UmbracoObjectTypes)Enum.Parse(typeof(UmbracoObjectTypes), countryGuidUdi.EntityType, true));
var countryName = Umbraco.TypedContent(countryNodeId.Result).Name;
var countryCode = Umbraco.TypedContent(countryNodeId.Result).GetProperty("countryCode").Value;

相关内容

  • 没有找到相关文章

最新更新