2016-12-12 3 views
0

Моей картина на самом деле:Динамического добавление элемента в Sitecore - имя элемента должно удовлетворять шаблон

^[\w\*\$][\w\s\-\$]*(\(\d{1,}\)){0,1}$ 

EDIT - для ясности, я не имею эту модель написано в моем коде, но я получаю сообщение об ошибке брошен, что говорит: «Имя не удовлетворяет шаблону^[\ w * \ $] [\ w \ s - \ $] * ((\ d {1,})) {0,1} $". Я думаю, что это настройка Sitecore? Я не уверен, где это определено, и я сам не писал.

Я пытаюсь добавить статьи в Sitecore динамически, но у меня проблема с элементом, который имеет период в имени. Я добавил функцию для дезинфекции имен (заимствованных из другого вопроса Sitecore, где он был опубликован как ответ на мою проблему), но он не работает. Это мой код:

var itemTemplateId = _templateFactory.GetTemplateId<IPressReleaseItem>(); 
TemplateID pressReleaseTemplateId = new TemplateID(itemTemplateId.ToID()); 
item = folder.Add(SanitizeHeadline(release.Headline), pressReleaseTemplateId); 

private string SanitizeHeadline(string name) 
{ 
    char[] invalidCharacters = Sitecore.Configuration.Settings.InvalidItemNameChars; 
    string sanitizedName = string.Concat(name.Trim().Split(invalidCharacters)); 
    return sanitizedName; 
} 

Меня зовут пункт «VirtualInvestorConferences.com празднует 75-летнее событие Поощрения прямого диалога между руководителями и акционерами»

Должен ли я просто вручную добавить «» в список недопустимых символов? Я хочу понять, почему это не работает.

+0

Я думаю, что лучше поставить свой текущий шаблон в вопрос, а не в заголовок. –

+0

Я бы использовал: @ "^ [\ w \.] + \ S + \ w + \ s + (\ d +)" Никогда не используйте оба символа^для начала строки и $ для конца в том же шаблоне. Он никогда не работает. – jdweng

+0

@jdweng: * «Никогда не используйте оба символа^для начала строки и $ для конца в том же шаблоне. Он никогда не работает». *: Извините, но какой глупый совет !!! –

ответ

4

Лучше использовать ItemUtil.ProposeValidItemName(name) для очистки недопустимых символов от вашего нового имени элемента.