无法将类型 '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
,这将 运行 第一行。
我试过:
- 将强类型对象
DynamicPublishedContent
替换为
var
.
- 将
int
而不是 string
传递给方法
(contestFolder
将是一个整数)。
- 在
Umbraco.Media()
上同时投射 returns 到
DynamicPublishedContent
- 不使用
DynamicPublishedContent
,而是使用
IPublishedContent
对象。
我改变了检索文件夹的方式。我指出了原因,它是 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
}
我在 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
,这将 运行 第一行。
我试过:
- 将强类型对象
DynamicPublishedContent
替换为var
. - 将
int
而不是string
传递给方法 (contestFolder
将是一个整数)。 - 在
Umbraco.Media()
上同时投射 returns 到DynamicPublishedContent
- 不使用
DynamicPublishedContent
,而是使用IPublishedContent
对象。
我改变了检索文件夹的方式。我指出了原因,它是 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
}