Asp.net mvc Sitecore 8.1按语言获取项目失败
我是Sitecore的新手,尝试通过以下步骤按特定语言检索项目时遇到问题: 通过内容编辑器为项目添加了新语言,即ar和文化信息为ar AE 通过以下两种方法之一获取语言失败: SC.Globalization.lang=SC.Globalization.Language.Parsear-AE;//并尝试用ar替代文化 SC.Globalization.lang=SC.Data.Managers.LanguageManager.GetLanguagear-AE;//并尝试用ar替代文化 SC.Context.SetLanguagelang,true; 回答:我只能获取en项,当我通过上述代码更改语言时,可以正确检索项,但字段为空 注意:我已经检查了Sitecore DB Master->VersionedFields[语言]和 找到同一项目的其他语言,仅另存为ar AE 使用单项目版本 更新: 我使用过滤器通过以下代码更改整个API语言:Asp.net mvc Sitecore 8.1按语言获取项目失败,asp.net-mvc,asp.net-web-api,sitecore,Asp.net Mvc,Asp.net Web Api,Sitecore,我是Sitecore的新手,尝试通过以下步骤按特定语言检索项目时遇到问题: 通过内容编辑器为项目添加了新语言,即ar和文化信息为ar AE 通过以下两种方法之一获取语言失败: SC.Globalization.lang=SC.Globalization.Language.Parsear-AE;//并尝试用ar替代文化 SC.Globalization.lang=SC.Data.Managers.LanguageManager.GetLanguagear-AE;//并尝试用ar替代文化 SC.Co
public class LanguageChecker : System.Web.Mvc.ActionFilterAttribute
{
// Set Default Language
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
SC.Globalization.Language lang = SC.Data.Managers.LanguageManager.GetLanguage("en");
if (filterContext.HttpContext.Request.Headers["Accept-Language"] != null || filterContext.HttpContext.Request.Headers["Accept-Language"].ToLower() == "ar")
{
// lang = SC.Globalization.Language.Parse("ar");
lang = SC.Data.Managers.LanguageManager.GetLanguage("ar-AE");
}
SC.Context.SetLanguage(lang, true);
base.OnActionExecuting(filterContext);
}
}
并在API主控制器中对该过滤器进行注释,就像任何过滤器一样
因此,我通过以下方式调用该项目:
SC.Data.Items.Item item = context.GetItem(SC.Data.ID.Parse(id));
在这种情况下,我不必更改每个项目的语言。
通常,要以任何语言获取项目,请使用LanguageSwitcher var item=Sitecore.Context.item; 使用新的Sitecore.Globalization.LanguageSwitcherar { arItem=item.Database.GetItemitem.ID; }
此用法将处理LanguageSwitcher并重置原始语言尝试在数据库类上使用静态方法。类似的东西可能会起作用:Sitecore.Context.Database.GetItemitem.ID,Language.Parsear 您是在尝试为用户切换语言还是只获取其他语言的特定项?我需要逐个语言获取项,我认为'SC.Context.SetLanguagelang,true;'在父API控制器上,构造函数将更改它,因此您的问题是检测当前语言?不检测当前语言,只需要获取不同语言的项,我已经能够在DBOk中看到它,现在我不清楚您的问题是什么?您能否显示完整的代码片段并准确显示代码的哪一部分不工作?此答案已标记为低质量。如果它回答了这个问题,考虑添加一点文本来解释它是如何工作的。