C# 如何覆盖玻璃贴图器链接?

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!

我试图解决一个问题,我想从url中排除文件夹。我已经有了一个项目解析器来处理这个项目,但是glassmapper正在处理这个文件夹

Im使用glassmapper链接获取url

更新:我已尝试覆盖GetItemUrl(),如下所示

   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。更新了最近的方法