Umbraco 7原型无法获取媒体udi

Umbraco 7原型无法获取媒体udi,umbraco,umbraco7,Umbraco,Umbraco7,我读过这些帖子 但我仍然无法从媒体选择器中获取值 在我最后一次尝试中,我得到了以下错误 对象引用未设置为对象的实例 如果我尝试以下方法: string img = ""; foreach (var d in archtypePanel.Properties) { if (d.Alias == "imageToDisplay") { img = d

我读过这些帖子

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

在我最后一次尝试中,我得到了以下错误

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

如果我尝试以下方法:

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中,true也设置为true

然后通过访问您的媒体url archtypePanel.GetPropertyValueimageToDisplay.Url

使用udi 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);
有关详细信息,请签出

从强类型模型访问 确保您的应用程序已更新为最新版本

而且在umbracoSettings.config中,true也设置为true

然后通过访问您的媒体url archtypePanel.GetPropertyValueimageToDisplay.Url

使用udi 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);
有关此操作的详细信息,请签出您可以尝试以下操作:

@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>
}
您可以尝试以下方法:

@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;

以下代码适用于我:

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;

您好@Alan Tsai感谢您的回复,在我的情况下,新Umbraco的安装似乎已损坏,我将项目保存到TFS,然后删除所有Nuget软件包,然后重新安装。然后我比较了配置文件和旧版本,发现它们缺少很多属性和元素。它现在可以使用:ImageId=archtypePanel.GetValueimageToDisplay.Url,该Url以前不起作用。umbraco.TypedMedia支持将Udi作为参数,无需额外调用GetIDWorkey。这更简单,可以完成相同的任务:var imageNode=Umbraco.TypedMediaimageGuidUdi;您好@Alan Tsai感谢您的回复,在我的情况下,新Umbraco的安装似乎已损坏,我将项目保存到TFS,然后删除所有Nuget软件包,然后重新安装。然后我比较了配置文件和旧版本,发现它们缺少很多属性和元素。它现在可以使用:ImageId=archtypePanel.GetValueimageToDisplay.Url,该Url以前不起作用。umbraco.TypedMedia支持将Udi作为参数,无需额外调用GetIDWorkey。这更简单,可以完成相同的任务:var imageNode=Umbraco.TypedMediaimageGuidUdi;