2016-01-25 2 views
0

Для элемента sitecore testItem как я могу убедиться, что у этого предмета есть поле «Title».Sitecore Как проверить, есть ли у товара определенное поле

Я спрашиваю, потому что я создаю некоторые поля в шаблоне элемента программно. Поэтому поле не должно создаваться снова, если оно уже существует.

Потому что с помощью этого кода я могу получить, если поле имеет какое-то значение или нет.

testItem["Title"] 
testItem.Fields["Title"] 
+1

Просто проверьте наличие пустого места. Это просто коллекция. – Liam

+0

Что делать, если поле 'Заголовок' существует, но оно содержит null? – Kamran

+2

Тогда это будет не пусто, но это '.Value' будет – Liam

ответ

6

Пожалуйста, проверьте этот код, вы проверяете, если элемент, поля сбора и значение поля не равно нулю

if(testItem!= null && testItem.Fields != null && testItem.Fields["Value"] != null) 
{ 
    string name = testItem.Fields["Title"].Value; 
} 
+3

.. или с некоторыми путями распространения # C# 6 magic :) 'var value = item? .Fields [" Title "] ?. Value;' –

+0

ha ha good one @StephenPope –

2

код ниже будет возвращать значение, в том числе стандарт или значение по умолчанию для поля:

 if (testItem.Fields["Title"] != null && testItem.Fields["Title"].HasValue) 
     { 
      string title = testItem["Title"].Value; 
     } 
0

Чтобы сохранить обязательное поле для проверки по вашему testItem более одного раза, вы можете применить к полю, а затем: проверить поле для n ull, что он имеет значение, а затем извлекает значение.

Преимущество в том, что если вам нужно получить доступ к полю в нескольких местах, вам не нужно извлекать из testItem каждый раз.

например.

Field titleField = testItem.Fields["Title"]; 

if (titleField != null && titleField.HasValue) 
{ 
    //do something with value 
    string fieldValue1 = titleField.Value; 

    //or (see intellisense for params) 
    string fieldValue2 = titleField.GetValue(true); 
}