Episerver LinkItemCollection не виден пользователям
Мы используем PageTypeBuilder для определения наших PageTypes, на одной странице у нас есть свойство, которое представляет коллекцию элементов Link, как показано ниже:
[PageTypeProperty(Type = typeof(PropertyLinkCollection), HelpText = "Test links.", EditCaption = "Test links", SortOrder = 11)]
public virtual LinkItemCollection PageLinks { get; set; }
Мы можем заполнить это в режиме редактора CMS ссылками, сохранить и опубликовать без каких-либо ошибок. Затем у нас есть пользовательский элемент управления, который наследуется от EPiServer.UserControlBase, захватывает свойство LinkItemCollection с помощью приведенного ниже кода и привязывает его к повторителю:
var links = currentPage.Property["PageLinks"].Value as LinkItemCollection;
if (links != null)
{
linkRepeater.DataSource = links;
linkRepeater.DataBind();
}
Если я захожу на страницу при входе в систему в качестве редактора CMS, эта страница работает нормально, и параметр links заполняется правильно, однако, если я просматриваю страницу как обычный пользователь и не вошел в систему, переменная links всегда равна нулю (хотя, когда я отладка Я вижу, что currentPage.Property["PageLinks"] присутствует, и тип является LinkCollection, просто значение имеет нулевое значение
Есть ли что-то, что мне нужно настроить здесь, разрешения для определенного типа страницы?
1 ответ
Проблема, скорее всего, в том, что одна из страниц в коллекции LinkItemCollection недоступна для внешних посетителей. Попробуйте получить доступ к ссылкам в коллекции в качестве внешнего посетителя и удалите все ссылки, которые на самом деле заблокированы извне.