Странное поведение при рендеринге ссылок с помощью Glass Mapper после обновления Sitecore

Я столкнулся с каким-то странным поведением в Glass Mapper в недавнем проекте, и мне интересно, есть ли у кого-нибудь идеи. Мне поручено обновить Sitecore с версии 8.1 (версия 160519) до версии 8.2 Update 7 (последняя версия 8.x). Когда обновление было завершено, я столкнулся с общей ошибкой поля ссылки, упомянутой в этой статье. Итак, я установил исправление и запустил сайт.

Когда я тестировал, я столкнулся со своеобразной проблемой со Glass Mapper. Обычные ссылки на сайте работают нормально, за исключением тех, которые используют Glass’s RenderLink или BeginRenderLink. Там для страниц, расположенных в расположении \sitecore\Content\Client\home, он вырезает начальный \home (поэтому ссылка на \sitecore\Content\Client\home\students будет отображаться как \students вместо \home\students) .

Тем не менее, Sitecore LinkManager работает нормально, и код Glass, похоже, использует LinkManager.

Я сделал это, чтобы проверить:

 @{
                var id = Guid.Parse("{74466305-2BB4-44D2-9860-57E35DC970E7}"); // the ID of a link that wasn’t rendering correctly.
                var item = SitecoreContext.GetItem<Sitecore.Data.Items.Item>(id);
                var sitecoreLink = Sitecore.Links.LinkManager.GetItemUrl(item); //using Sitecore’s link gets me the correct /home/student/application
                var glassLink = RenderLink(m => m.CompleteApplication); //this comes back as /student/application
       }

Сначала я подумал, что Glass путает \sitecore\Content\Client\home с \sitecore\Content\Home, но переименование узла и перестройка базы данных ссылок ничего не исправили.

Я пробовал несколько разных версий Glass Mapper 4.x без каких-либо различий. Я начал отлаживать код Glass Mapper, но это медленно.

У кого-нибудь есть мысли?


person Danimal    schedule 08.07.2019    source источник


Ответы (1)


Ссылка Glass в V4 создается при создании модели. Вполне вероятно, что модель была сгенерирована в другом контексте сайта (Sitecore.Context.Site).

Чтобы проверить, как заставить Glass загрузить модель в представлении выше, а затем получить URL-адрес, это гарантирует, что оба URL-адреса генерируются в одном и том же контексте сайта. Если это разные контексты сайта, вам нужно будет увидеть, где и как переключается контекст сайта.

person Michael Edwards    schedule 12.07.2019
comment
К сожалению, этого не произошло. Тот же результат. Я даже прошел и обновился до Glass 5 и получил тот же результат. - person Danimal; 01.08.2019