Sitecore玻璃贴图器始终为空

Sitecore玻璃贴图器始终为空,sitecore,code-generation,glass-mapper,tds,sitecore7.2,Sitecore,Code Generation,Glass Mapper,Tds,Sitecore7.2,我正在为一个新项目使用Sitecore Glass Mapper。 我们正在使用Sitecore 7.2、最新版本的团队开发用于Sitecore(TDS)代码生成和最新版本的glass 我正在尝试执行的代码: var b = new SitecoreContext(); var c = b.GetCurrentItem<T01_Homepage>(); 当我查看b.GlassContext.TypeConfigurations时,我的所有模型都在那里 我想这可能是一个语言问题,因为

我正在为一个新项目使用Sitecore Glass Mapper。 我们正在使用Sitecore 7.2、最新版本的团队开发用于Sitecore(TDS)代码生成和最新版本的glass

我正在尝试执行的代码:

var b = new SitecoreContext();
var c = b.GetCurrentItem<T01_Homepage>();
当我查看b.GlassContext.TypeConfigurations时,我的所有模型都在那里

我想这可能是一个语言问题,因为该网站是荷兰语的,可能错误的语言会被错误地解决。事实并非如此

我禁用了WebActivator,并在Global.asax应用程序的启动方法中添加了GlassMapperSc.Start()

我们还使用Autofac作为DI框架。但是如果没有它,它仍然不能像上面看到的那样工作。另外,当我在不生成TDS代码的情况下创建自己的自定义模型时,
GetCurrentItem
的结果为空


有人知道我如何解决这个问题吗?

大多数时候,这是一个语言问题。当您没有当前或给定语言的版本时,映射程序将返回null对象

令人困惑的是,Sitecore.Context.Database.GetItem返回一个对象,即使它没有当前语言的版本。一定要检查该项目。版本有任何。您可以尝试一些东西(这不适合注释字段)

1) 确认Sitecore项目对象中的相关字段包含值(因此
Sitecore.Context.Item
用于“c”变量,而
Sitecore.Context.Database.GetItem(“路径”)
用于“d”变量)

2) 尝试将GetItem/GetCurrentItem调用封装在
VersionCountDisabler
中,如下所示:

T01_Homepage model = null;

using (new VersionCountDisabler())
{
  var context = new SitecoreContext();
  model = context.GetItem<T01_Homepage>("path");
}

// Do you have data in model now?
T01\u主页模型=null;
使用(新版本CountDisabler())
{
var context=new SitecoreContext();
model=context.GetItem(“路径”);
}
//现在模型中有数据了吗?
3) 尝试使用
SecurityDisabler
封装相同的调用。只是为了确认这不是安全问题


4) 如果您仍然不知道它是什么,请使用一些(简化的)模型代码更新您的问题。

您是否检查了您的Sites.config和此网站的默认语言?Sitecore languages文件夹中定义的语言与您的配置之间可能存在差异


我在一个项目中遇到了类似的问题,我将Sitecore.Context.Language改为“nl”,而不是“nl nl”。glass映射器将返回null,但在这种情况下,Sitecore.Context.Database.GetItem将返回一个对象。

这就成功了。我的语言是nl nl,在sites.config中,sites/site节点的属性语言是nl。谢谢。这很有趣——我也遇到了类似的问题,事实上,当我检查我网站的根目录时,语言似乎被设置为“hr”——我从未明确设置过这个值,但后来我删除了我网站的一个一级孩子的名字:这会不会让Sitecore/Glass.Mapper认为“hr”(克罗地亚语)应该是语言,因此返回一个空项?谢谢,这个响应与Aldentev的响应相结合,为我带来了窍门。
public static IConfigurationLoader[] GlassLoaders(){            

    var attributes = new AttributeConfigurationLoader(new[] { "Company.Framework.Websites.Corporate", "Company.Framework.Core", "Company.Framework.Common" });

    return new IConfigurationLoader[] { attributes };
}
T01_Homepage model = null;

using (new VersionCountDisabler())
{
  var context = new SitecoreContext();
  model = context.GetItem<T01_Homepage>("path");
}

// Do you have data in model now?