问题标签 [glass-mapper]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
5034 浏览

linq - Sitecore7 Linq to Sitecore 仅适用于 SearchResultItem 但不适用于自定义映射类

我有一个非常奇怪的问题,我无法理解。也许有人可以指出我做错了什么。

基本上,我只是想使用 Linq to Sitecore 搜索项目。

所以,我的课看起来像(我也在用玻璃)

因此,当我执行以下查询时,它会按预期工作。

但是,当我执行以下操作时,它返回 0 结果。

我已阅读此链接。我已经按照此处描述的第二个流程让 Glass 与 Sitecore7 Search 一起工作(“SharedFieldClass”包含所有基本索引字段)。

这是一个非常明显的场景,我敢肯定很多人已经这样做了,我在这里做了一些愚蠢的事情。

提前致谢。

/## 编辑 ##/

好的,所以我对此做了更多的挖掘。不确定这是否是 ContentSearch/Luncene.NET API 中的错误,或者我遗漏了一些东西,但似乎这里发布的内容可能不是 TRUE,如果您有一个复杂的字段类型(您会这样做),您无法使用映射类进行查询反对 Lucene。(不确定 Solr 是否也是这种情况)。如果您正在搜索字符串和 int 等简单类型,那么它就像一个魅力。

所以这是我的发现:

  1. 在为 contentsearch 启用 DEBUG 和 LOG 后,我发现如果我像这样查询context.GetQueryable<MyMappedClass>().Where(c => c.field1.MyValue == "{GUID}")它会被翻译成什么,DEBUG Executing lucene query: field1.value:7e9ed2ae07194d83872f9836715eca8e并且在名为“field1.value”的索引中没有这样的东西,查询不会返回任何内容。索引的名称实际上只是“field1”。这是一个错误吗?
  2. 但是,这样的查询context.GetQueryable<SearchResultItem>() .Where(c => ((string)c["field1"]) == "{GUID}").GetResults();有效,因为它被翻译成"DEBUG Executing lucene query: +field1:7e9ed2ae07194d83872f9836715eca8e".
  3. 我也确实在我的映射类中编写了一个方法,如下所示:

    /li>

这使我可以使用 MyMappedClass 编写以下查询。

这返回了预期的结果。但是未填充 MyMappedClass 中字段的值(实际上它们都是空的,除了填充文档中填充的核心/共享值,如 templateid、url 等)。所以结果列表几乎没有用。我可以对所有这些进行循环并手动获取填充的值,因为我有 itemid。但是想象一下大型结果集的成本。

最后我这样做了:

因此,在使用“IndexViewer2.0”的 lucene 查询中返回了填充的“field1”和 itemid。但是这对于 MyMappedClass 也失败了,因为文档中“field1”的值是 System.string .. 但它在MyMappedClass中被映射为“MyKeyValue”所以它抛出以下异常

所以,最大的问题是: 如何使用酷炫的 ContentSearch API 使用他/她的映射类进行查询?

0 投票
1 回答
1288 浏览

sitecore - Sitecore 项目 glasscast 参数值 key null

我正在尝试将 Sitecore 项目(它在存储桶中不知道这是否相关)转换为特定类型:

Createtype 方法将站点核心项转换为 <> 之间的类型。但是,当我执行此代码时,出现以下错误:

我正在尝试转换为 2 种不同的类型:用户和员工。当我为用户使用上面的代码时,它可以工作,但是当我投射到 Staffmember 时,我得到了错误

用户等级:

职员等级:

有没有人遇到过这个错误或知道如何解决它?

提前致谢

0 投票
1 回答
2059 浏览

asp.net-mvc-4 - 错误:无法加载文件或程序集“System.Web.Mvc,Version=3.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一

我希望我的字段在 sitecore 中是可编辑的(支持页面编辑器)。我正在使用 MVC 4.0 和 Glass Mapper 来映射字段。在阅读文章Page Editing in MVC之后,我使用了

在我的部分视图中获取 >@Editable 但是当我使用继承关键字时,我的页面会出现以下错误消息

有人可以建议如何@Editable 关键字使用 MVC 4.0 和 Glass Mapper 版本 - 3.0.10.23 在 Sitecore 中编辑我的字段。其他版本是

Glass.Mapper.Sc 版本 - 3.2.0.39

Glass.Mapper.Sc.Mvc 版本 - 3.2.0.34

我的视图如下所示

请建议。谢谢

0 投票
1 回答
1824 浏览

sitecore - Glass Mapper RenderLink 链接描述 - 如果为空,则为默认文本

当内容编辑器设置链接时,我需要一种方法来捕获它,但实际上并没有放入链接描述。目前它只是呈现空间。以上工作,但它很笨重,我需要把它放在我使用RenderLink. 如果文本为空,如何默认文本?

0 投票
1 回答
6713 浏览

orm - Sitecore 玻璃映射器 GetItem(guid) 总是返回 null

我看到了一个相关的问题: Sitecore Glass Mapper always null

但不幸的是,它并没有为我的情况提供解决方案。

这是一个代码片段:

在上面的代码中: i is not null t is null

文章是简单的类,如:

Sitecore 中只安装了一种语言 - en,它也已在 web.config 的项目中指定。

此外,我还添加GlassMapperSc.Start();了我Application_StartGlobal.asax.cs程序集并将我的程序集添加到包含程序集的列表中,并且我成功地在映射var attributes = new AttributeConfigurationLoader(new[] { "Assembly.Name" });中找到了我的类。SitecoreContext

正如一开始提供的链接中所述,它看起来不像是语言问题。而且我已经为此苦苦挣扎了很长时间,但是没有运气...

谢谢你!

0 投票
1 回答
1418 浏览

c# - 您能否将 Glass Mapper 字段转换/转换为相应的 Sitecore 字段?

我们使用 Sitecore 和 TDS,我刚刚开始尝试利用 Glass 进行一些重构,并试图弄清楚是否有办法获取 Glass 字段(例如 Glass.Mapper.Sc.Field.Link ) 并将其转换/转换为底层的 Sitecore LinkField(通用链接),这样我就可以使用我们在其他地方已有的将 LinkField 作为参数的现有实用程序方法(例如)。

我做了一些查找,但没有找到任何东西——只是想弄清楚我是否需​​要创建实用方法的重构版本来接受 Glass 对象,或者这是否可以通过其他方式实现。如果您能提供帮助,请提前致谢。

0 投票
1 回答
2419 浏览

nunit - 使用 NUNIT 发布单元测试 Sitecore 和 Glass

我们一直在使用 codeflood 测试我们的 Sitecore 代码,但希望做更多的事情来自动化我们对本地和 CI 构建的测试。我一直在关注 Mike Edwards 提出的关于如何使用 NUNIT 运行 Sitecore 测试的解决方案 -

后来,Dan Solovay 发表了一些关于如何改进的想法——

到目前为止,这在视觉工作室构建中效果很好。配置从 Sitecore 网站复制到测试项目,NUNIT 可以执行从 Sitecore 检索项目的测试,所有这些都没有上下文。

我的问题 - 我们使用 Glass Mapper 来处理这样的事情:

问题似乎是 Glass Mapper 的 SitecoreService 构造函数需要一个上下文,如果没有,它使用“默认”。由于我们在 NUNIT 中执行,因此没有上下文,并且 Sitecore 服务的创建失败。

我怀疑有一个明确的答案可以解决这个问题,但我会对任何人的想法感兴趣。

如果没有 Sitecore 上下文,也许无法在测试中使用 Glass Mapper。另一方面,我绝不是 Glass 专家——也许有不同的方法可以在测试中映射我的班级?

0 投票
2 回答
959 浏览

sitecore - Glass.Mapper.Sc.CastleWindsor 显然无法访问另一个程序集中的类

我们正在运行 Sitecore 7.2,并正在探索将 Glass.Mapper.Sc.CastleWindsor 用于一个刚刚开始的大型项目。我们遇到了问题。

我们有以下解决方案: 1. 核心可重用代码的基础项目 2. 可重用 web 代码、控件等的基础 web 项目(参考 #1) 3. 领域模型和其他非 web 的项目特定项目代码(参考#1) 4. Project-specific web project(参考#1,2,3)

项目#2 和#4 指向同一个Web 根目录。我们运行 Sitecore 的多站点实例,但这个项目是我们在 7.x 版本上的第一个项目;其他人将适时迁移。

在 GlassMapperScCustom GlassLoaders() 方法中,我们有这个:

对于我们的第一个概念验证,我们在项目 3 中找到了一个域模型类,并试图让 Glass 映射在项目 4 中工作。没有骰子。以下都返回一个项目,但没有填写字段:

我们已经尝试在所有四个项目中安装 nuget 包 Glass.Mappers.Sc.CastleWindsor,但无济于事。我们也尝试过使用 VersionDisabler、检查网站语言等,但也没有成功。

Glass.Mapper.Sc 教程和一些示例代码不一致,我怀疑这是问题的一部分。一些教程展示了旧的做事方式,另一些展示了新的,但我们现在已经尝试了教程中显示的所有方式来加载我们的类。

该页面... http://www.glass.lu/download/glass-sitecore-mapper/ ...似乎表明Glass仅支持7.0版的Sitecore。这是准确的,还是只是更过时的信息?这些链接似乎从那个 Marketplace 页面转到旧的 Sitecore Mapper 网站。

我们需要尽快完成这项工作,否则我们将不得不放弃在这个大型项目中使用 Glass,我们不愿意这样做,因为这将意味着进一步使用自定义项目生成器或裸项目访问。感谢您提供任何帮助。

0 投票
1 回答
1258 浏览

solr - Glass.Mapper.Sc 是否使用索引字段进行 sitecore7 搜索

我的项目正在使用 Sitecore7 MVC、Solr 和 Glass Mapper。

“ContentSearch”索引几乎包含了站点核心模板中使用的所有字段。我使用 GlassMapper 类作为我的模型(它几乎只包含作为站点核心字段的属性)并对其进行查询。基本上按照此处所述执行“使用自定义结果类”:http: //glass.lu/docs/tutorial/sitecore/tutorial25/tutorial25.html

哪个按预期工作。

我的问题是:

只要索引存在(这是我想要的),它是否使用 Solr 索引填充类属性(通常是站点核心字段)?

或者

是否要通过 sitecore 获取字段值?(我认为这是低效的,在这种情况下,我将编写自定义类并遍历它们以填充 glassMapper 类,因为在我的视图中我使用 GlassMapper 类作为我的模型)

例如,我的一个模型如下所示:

0 投票
1 回答
1291 浏览

c# - 如何放置使用 Glass View 的静态视图渲染?

有一个布局页面并尝试在其上放置静态渲染的视图。并且还需要将数据源传递给它,像这样

但是我收到了这个错误,

传入字典的模型项的类型为“Sitecore.Mvc.Presentation.RenderingModel”,但此字典需要“Web.Data.Models.LightboxModel”类型的模型项。

有没有人解决这个问题?

谢谢