我们有带有MVC的Kentico 11.0.26
我有一个可以像这样检索的页面
General mainPage = GeneralProvider.GetGeneral(completeAlias, "en-us", SiteContext.CurrentSiteName)
.Columns("DocumentName", "NodeId", "NodeParentID", "NodeLevel");
现在,我需要获取该节点的同级页面,该页面可能是相同类型,也可能不是相同类型。
为了保留节点顺序,我试图一次调用它们:
var siblings = DocumentHelper
.GetDocuments()
.OnSite("mySite")
.Culture("en-US")
.Where(d => d.NodeParentID == mainPage.NodeParentID && d.NodeLevel == mainPage.NodeLevel)
.OrderBy(d => d.NodeOrder)
.ToList();
但是我无法检索仅在一种页面类型中存在的字段值。以下引发空引用异常:
foreach (var item in siblings)
{
string colValue = item.GetValue("myColumn").ToString();
}
如何检索仅存在于一种页面类型中的字段值(并非每个兄弟姐妹都具有此列)?
答案 0 :(得分:1)
在文档查询中同时使用.Types()和.WithCoupledColumns()来检索多种页面类型的列值很重要。
https://docs.kentico.com/k11/custom-development/working-with-pages-in-the-api
var siblings = DocumentHelper
.GetDocuments()
.Types("MySite.General","MySite.Link")
.WithCoupledColumns()
.OnSite("MySite")
.Culture("en-US")
.Published();
答案 1 :(得分:0)
您可以使用.TryGetValue代替GetValue
var colValue;
item.TryGetValue("myColumn", out colValue);
或先检查类名,然后获取值,即item.GetValue("ClassName")