Странное поведение рендеринга ссылок со Glass Mapper после обновления Sitecore - PullRequest
0 голосов
/ 08 июля 2019

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

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

Тем не менее, Sitecore LinkManager работает просто отлично, и код стекла, по-видимому, использует 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, но переименование узла и перестройка базы данных ссылок ничего не исправили.

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

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

1 Ответ

0 голосов
/ 12 июля 2019

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...