C# 如何覆盖玻璃贴图器链接?
我试图解决一个问题,我想从url中排除文件夹。我已经有了一个项目解析器来处理这个项目,但是glassmapper正在处理这个文件夹 Im使用glassmapper链接获取url 更新:我已尝试覆盖GetItemUrl(),如下所示C# 如何覆盖玻璃贴图器链接?,c#,asp.net,sitecore,glass-mapper,C#,Asp.net,Sitecore,Glass Mapper,我试图解决一个问题,我想从url中排除文件夹。我已经有了一个项目解析器来处理这个项目,但是glassmapper正在处理这个文件夹 Im使用glassmapper链接获取url 更新:我已尝试覆盖GetItemUrl(),如下所示 public override string GetItemUrl(Sitecore.Data.Items.Item item,Sitecore.Links.UrlOptions options) { if(item.Parent!
public override string GetItemUrl(Sitecore.Data.Items.Item item,Sitecore.Links.UrlOptions options)
{
if(item.Parent!= null && item.Parent.TemplateID.Equals(AliasFolder))
{
var customUrl = base.GetItemUrl(item, options);
return customUrl.Replace($"{LinkManager.GetItemUrl(item.Parent, options)}",string.Empty).ToLower();
}
return base.GetItemUrl(item, options);
}
问题是,如果该项处于子项级别,那么它将跳过,因为我没有检查每个父项。我试图避免每个链接的循环,并检查它的父母。有没有更好的方法可以尝试
电流互感器
- 家
- 文件夹
- 项目A
- B项
- 项目B1
- 文件夹
感谢Glass mapper使用
LinkManager
生成链接ItemResolver
负责将url转换为Sitecore项目<代码>链接管理器负责生成url。您需要重写LinkManager
或LinkProvider
。但这只会在我使用LinkManager时调用?e、 g LinkManager.GetItemUrl()@CodeBox-听起来好像您用自己的自定义ItemResolver替换了OOTB ItemResolver。如果是这样的话,您可以发布自定义ItemResolver的代码吗?然后,我们可以告诉您如何覆盖LinkManager和/或LinkProvider。最新更新的Approach Glass mapper使用LinkManager
生成链接ItemResolver
负责将url转换为Sitecore项目<代码>链接管理器负责生成url。您需要重写LinkManager
或LinkProvider
。但这只会在我使用LinkManager时调用?e、 g LinkManager.GetItemUrl()@CodeBox-听起来好像您用自己的自定义ItemResolver替换了OOTB ItemResolver。如果是这样的话,您可以发布自定义ItemResolver的代码吗?然后,我们可以告诉您如何覆盖LinkManager和/或LinkProvider。更新了最近的方法