无法将类型 'Umbraco.Core.Dynamics.DynamicNull' 转换为 'Umbraco.....' - Umbraco v6

Cannot convert type 'Umbraco.Core.Dynamics.DynamicNull' to 'Umbraco.....' - Umbraco v6

我在 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' 转换为 'Umbraco.Web.Models.DynamicPublishedContent'

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

我试过:

我改变了检索文件夹的方式。我指出了原因,它是 b/c 如果不管第二次合并是否命中,Umbraco 都会尝试检索文件夹,如果它为空,则 returns 那个错误,

无法将类型 '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
}