无法转换类型&umbraco.Core.Dynamics.DynamicNull'到了&umbraco .....' - Umbraco v6

时间:2015-06-10 13:02:57

标签: c# dynamic umbraco

我看过Umbraco中关于IPublishedContent的一些类似错误(是的,我知道这是与我使用的不同),他们都说了自4.11.7以来它已被修复 - 但是,我使用v6显然不是这样。

我的代码一直有效,直到我投入合并:

曾为:

DynamicPublishedContent countryFolder = Umbraco.Media(CurrentPage.GetProperty("contestMediaFolder").Value.ToString());

不再有效:

DynamicPublishedContent countryFolder = !string.IsNullOrEmpty(contestFolder)
                                             ? Umbraco.Media(CurrentPage.GetProperty("contestMediaFolder").Value.ToString())
                                             : Umbraco.Media(contestFolder);

无法转换类型&umbraco.Core.Dynamics.DynamicNull' to' Umbraco.Web.Models.DynamicPublishedContent'

我有(2)调用相同代码的控制器,一个是在页面加载时命中的控制器,另一个是API控制器。这就是我传入变量contestFolder,即string的原因,因为此方法返回一个列表。在我的方法调用中,我也传入string.Empty,这将运行第一行。

我试过了:

  • 替换强类型对象DynamicPublishedContent var
  • int而不是string传递给该方法 (contestFolder将是一个int)。
  • Umbraco.Media()上投放两个回报 DynamicPublishedContent
  • 不使用DynamicPublishedContent,而是使用 IPublishedContent对象。

1 个答案:

答案 0 :(得分:0)

我改变了我检索文件夹的方式。我挑出了原因,如果无论第二次合并命中,Umbraco是否尝试检索文件夹,如果它为空,则返回该错误,这是b / c,

无法将类型'Umbraco.Core.Dynamics.DynamicNull'转换为'Umbraco.Web.Models.DynamicPublishedContent'

因此,您必须将实际媒体ID(有效)传递给Umbraco.Media()方法,否则您将返回此错误。

public override ActionResult Index(RenderModel model)
{
    var entries = this.GetContestEntries(this.GetCountryFolder(CurrentPage.GetProperty("contestMediaFolder").Value.ToString()));

    return base.Index(model);
}

public DynamicPublishedContent GetCountryFolder(string countryFolder)
{
    return (DynamicPublishedContent)Umbraco.Media(countryFolder);
}

public List<WAR2015ContestModel> GetContestEntries(DynamicPublishedContent countryFolder)
{
     .....  // code omitted
}