Не удалось получить свойство страницы - PullRequest
0 голосов
/ 26 января 2019

У нас Kentico 11.0.26 с MVC

У меня есть страница, которую я могу получить вот так

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();
}

Как я могу получить значение этого поля, которое существует только в одном из типов страниц (не каждый брат может иметь этот столбец)?

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Важно использовать как .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();
0 голосов
/ 26 января 2019

Вы можете использовать .TryGetValue вместо GetValue

var colValue;
item.TryGetValue("myColumn", out colValue);

или предварительно проверить имя класса, а затем получить значение, например item.GetValue("ClassName")

...