问题标签 [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.
linq - Sitecore7 Linq to Sitecore 仅适用于 SearchResultItem 但不适用于自定义映射类
我有一个非常奇怪的问题,我无法理解。也许有人可以指出我做错了什么。
基本上,我只是想使用 Linq to Sitecore 搜索项目。
所以,我的课看起来像(我也在用玻璃)
因此,当我执行以下查询时,它会按预期工作。
但是,当我执行以下操作时,它返回 0 结果。
我已阅读此链接。我已经按照此处描述的第二个流程让 Glass 与 Sitecore7 Search 一起工作(“SharedFieldClass”包含所有基本索引字段)。
这是一个非常明显的场景,我敢肯定很多人已经这样做了,我在这里做了一些愚蠢的事情。
提前致谢。
/## 编辑 ##/
好的,所以我对此做了更多的挖掘。不确定这是否是 ContentSearch/Luncene.NET API 中的错误,或者我遗漏了一些东西,但似乎这里发布的内容可能不是 TRUE,如果您有一个复杂的字段类型(您会这样做),您无法使用映射类进行查询反对 Lucene。(不确定 Solr 是否也是这种情况)。如果您正在搜索字符串和 int 等简单类型,那么它就像一个魅力。
所以这是我的发现:
- 在为 contentsearch 启用 DEBUG 和 LOG 后,我发现如果我像这样查询
context.GetQueryable<MyMappedClass>().Where(c => c.field1.MyValue == "{GUID}")
它会被翻译成什么,DEBUG Executing lucene query: field1.value:7e9ed2ae07194d83872f9836715eca8e
并且在名为“field1.value”的索引中没有这样的东西,查询不会返回任何内容。索引的名称实际上只是“field1”。这是一个错误吗? - 但是,这样的查询
context.GetQueryable<SearchResultItem>() .Where(c => ((string)c["field1"]) == "{GUID}").GetResults();
有效,因为它被翻译成"DEBUG Executing lucene query: +field1:7e9ed2ae07194d83872f9836715eca8e"
. 我也确实在我的映射类中编写了一个方法,如下所示:
/li>
这使我可以使用 MyMappedClass 编写以下查询。
这返回了预期的结果。但是未填充 MyMappedClass 中字段的值(实际上它们都是空的,除了填充文档中填充的核心/共享值,如 templateid、url 等)。所以结果列表几乎没有用。我可以对所有这些进行循环并手动获取填充的值,因为我有 itemid。但是想象一下大型结果集的成本。
最后我这样做了:
因此,在使用“IndexViewer2.0”的 lucene 查询中返回了填充的“field1”和 itemid。但是这对于 MyMappedClass 也失败了,因为文档中“field1”的值是 System.string .. 但它在MyMappedClass中被映射为“MyKeyValue”所以它抛出以下异常
所以,最大的问题是: 如何使用酷炫的 ContentSearch API 使用他/她的映射类进行查询?
sitecore - Sitecore 项目 glasscast 参数值 key null
我正在尝试将 Sitecore 项目(它在存储桶中不知道这是否相关)转换为特定类型:
Createtype 方法将站点核心项转换为 <> 之间的类型。但是,当我执行此代码时,出现以下错误:
我正在尝试转换为 2 种不同的类型:用户和员工。当我为用户使用上面的代码时,它可以工作,但是当我投射到 Staffmember 时,我得到了错误
用户等级:
职员等级:
有没有人遇到过这个错误或知道如何解决它?
提前致谢
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
我的视图如下所示
请建议。谢谢
sitecore - Glass Mapper RenderLink 链接描述 - 如果为空,则为默认文本
当内容编辑器设置链接时,我需要一种方法来捕获它,但实际上并没有放入链接描述。目前它只是呈现空间。以上工作,但它很笨重,我需要把它放在我使用RenderLink
. 如果文本为空,如何默认文本?
orm - Sitecore 玻璃映射器 GetItem(guid) 总是返回 null
我看到了一个相关的问题: Sitecore Glass Mapper always null
但不幸的是,它并没有为我的情况提供解决方案。
这是一个代码片段:
在上面的代码中: i is not null t is null
文章是简单的类,如:
Sitecore 中只安装了一种语言 - en,它也已在 web.config 的项目中指定。
此外,我还添加GlassMapperSc.Start();
了我Application_Start
的Global.asax.cs
程序集并将我的程序集添加到包含程序集的列表中,并且我成功地在映射var attributes = new AttributeConfigurationLoader(new[] { "Assembly.Name" });
中找到了我的类。SitecoreContext
正如一开始提供的链接中所述,它看起来不像是语言问题。而且我已经为此苦苦挣扎了很长时间,但是没有运气...
谢谢你!
c# - 您能否将 Glass Mapper 字段转换/转换为相应的 Sitecore 字段?
我们使用 Sitecore 和 TDS,我刚刚开始尝试利用 Glass 进行一些重构,并试图弄清楚是否有办法获取 Glass 字段(例如 Glass.Mapper.Sc.Field.Link ) 并将其转换/转换为底层的 Sitecore LinkField(通用链接),这样我就可以使用我们在其他地方已有的将 LinkField 作为参数的现有实用程序方法(例如)。
我做了一些查找,但没有找到任何东西——只是想弄清楚我是否需要创建实用方法的重构版本来接受 Glass 对象,或者这是否可以通过其他方式实现。如果您能提供帮助,请提前致谢。
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 专家——也许有不同的方法可以在测试中映射我的班级?
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,我们不愿意这样做,因为这将意味着进一步使用自定义项目生成器或裸项目访问。感谢您提供任何帮助。
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 类作为我的模型)
例如,我的一个模型如下所示:
c# - 如何放置使用 Glass View 的静态视图渲染?
有一个布局页面并尝试在其上放置静态渲染的视图。并且还需要将数据源传递给它,像这样
但是我收到了这个错误,
传入字典的模型项的类型为“Sitecore.Mvc.Presentation.RenderingModel”,但此字典需要“Web.Data.Models.LightboxModel”类型的模型项。
有没有人解决这个问题?
谢谢