Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc Sitecore 8.1按语言获取项目失败_Asp.net Mvc_Asp.net Web Api_Sitecore - Fatal编程技术网

Asp.net mvc Sitecore 8.1按语言获取项目失败

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

我是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语言:

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中看到它,现在我不清楚您的问题是什么?您能否显示完整的代码片段并准确显示代码的哪一部分不工作?此答案已标记为低质量。如果它回答了这个问题,考虑添加一点文本来解释它是如何工作的。