在最近的一个项目中,我在Glass Mapper中遇到了一些奇怪的行为,我想知道是否有人对此有任何见解。我的任务是将Sitecore从8.1(修订版160519)升级到8.2 Update 7(最新的8.x版本)。升级完成后,我遇到了this article中提到的常规链接字段错误。因此,我安装了此修复程序并启动了站点。
当我测试时,我遇到了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代码进行调试,但是进展缓慢。
有人有什么想法吗?
答案 0 :(得分:0)
创建模型时,将生成V4中的Glass链接。该模型可能是在其他Site上下文(Sitecore.Context.Site)下生成的。
要测试让Glass在上面的视图中加载模型,然后获取URL,这将确保两个URL在同一站点上下文中生成。如果站点上下文不同,则需要查看站点上下文的切换位置和方式。