4

也许我是盲人,但我找不到任何关于为 Sitecore 的快速查询转义特殊字符的文档。

例如,我想搜索描述中包含以下文本的内容项:“hot n' taste”

注意:我尝试了以下转义:

var searchTerm = "hot n'' tasty";  // thought it might need to be escaped for sql
var searchTerm = "#hot n' tasty#"; // this is how you do some other sitecore escaping
var searchTerm = "hot n\' tasty";

示例应用程序代码:

var searchTerm = "hot n' tasty";
var query = string.Format("fast:/sitecore/content/Home/Products//*[@ContentDescriptionText='%{0}%']", searchTerm);
var items = Database.SelectItems(query);

目前,这给了我一个例外,所以我假设我需要进行某种转义:

“]”应位于位置 67。

说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:Sitecore.Data.Query.ParseException:“]”应位于第 67 位。

4

2 回答 2

8

这是一个帖子,正是您正在尝试做的事情。基本上,您必须使用转义的双引号来包装包含引号的字段值。

var searchTerm = "hot n' tasty";
var query = string.Format("fast:/sitecore/content/Home/Products//*[@ContentDescriptionText=\"%{0}%\"]", searchTerm);
var items = Database.SelectItems(query);

编辑:添加了关于转义快速查询的链接 CoolMcGrr 参考及其限制..此处

于 2013-05-31T00:36:10.820 回答
4

根据@Kevin 的回答和链接,我想出了一个合适的解决方案:

var searchTerm = "hot n' tasty";
// old code for comparison
//var query = string.Format("fast:/sitecore/content/Home/Products//*[@ContentDescriptionText='%{0}%']", searchTerm);
var query = string.Format("fast:/sitecore/content/Home/Products//*[@ContentDescriptionText=\"%{0}%\"]", searchTerm);
var items = Database.SelectItems(query);
于 2013-05-31T01:38:43.883 回答