即使Sitecore中存在值,Sitecore词典值也会在页面上显示为“ <空白>”

时间:2018-07-03 20:14:29

标签: dictionary sitecore8.1

大多数词典值在页面上显示为“”。我们使用以下代码在字典项目上启用语言后备-

public class TryGetDictionaryWithItemFallback
{
    public void Process(GetTranslationArgs args)
    {
        if (args.HasResult)
        {
            return;
        }

        if (Context.Site?.Properties["enableItemLanguageFallback"] == "true")
        {
            Database database = args.Options.Database ?? args.ContentDatabase;

            Language fallbackLanguage = LanguageFallbackManager.GetFallbackLanguage(args.Language, database);
            if (fallbackLanguage != null)
            {
                args.Result = Translate.TextByLanguage(args.DomainName, args.Options, args.Key, fallbackLanguage, null, args.Parameters);
            }

        }
    }
}

“ en-US”是网站的默认语言,所有其他语言均回退到“ en-US”。当我们以“ en-US”语言浏览页面时,词典值不会出现在页面上。调试时,我们发现当词典项目存在“ en-US”版本时,args.HasResult值设置为true。但是在我们的例子中,args.HasValue设置为false(即使Sitecore中存在带有“ en-US”语言值的字典项)。由于args.HasValue返回false,因此代码逻辑将尝试查找“ en-US”的后备语言,该语言为none,然后返回“”值。我们验证了词典项目在sitecore中具有“ en-US”语言版本的值。我们将sitecore.kernel.dll反编译以找到args.HasValue的设置程序,并发现它检查Result属性是否具有值。在调试时,字典项的Result属性为null,但在sitecore中,字典项包含“ en-US”语言版本的值。谁能说出这是什么原因造成的? 之前它工作得很好,但是最近停止了工作。我们也恢复了最近的更改,但仍然无法正常工作。

0 个答案:

没有答案