我看过关于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,因为这个方法返回一个列表。在我的方法调用中,我还传入string.Empty,它将运行第一行。
我试过:
DynamicPublishedContent替换为var。int而不是string传递给该方法(contestFolder将是一个int)。Umbraco.Media()上的两个返回转换为DynamicPublishedContentDynamicPublishedContent,而是使用IPublishedContent对象。发布于 2015-06-10 13:48:02
我改变了检索文件夹的方式。我挑出了原因,如果不管第二次合并成功与否,Umbraco都会尝试检索文件夹,如果是null,它会返回错误,
无法将“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
}https://stackoverflow.com/questions/30757190
复制相似问题