我已阅读这些帖子
https://our.umbraco.org/forum/templates-partial-views-and-macros/85993-archetype-mediapicker-udi
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会抛出错误。
答案 0 :(得分:4)
确保您的Umbraco-Core-Property-Value-Converters已更新为最新
并且umbracoSettings.config
<EnablePropertyValueConverters>true</EnablePropertyValueConverters>
也设置为true
然后通过
访问您的媒体网址
archtypePanel.GetPropertyValue<IPublishedContent>("imageToDisplay").Url
另一种方法是使用你得到的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 rendering images (MediaPicker2)
答案 1 :(得分:0)
答案 2 :(得分:0)
以下代码对我有用:
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;