也许我是盲人但我找不到任何关于为Sitecore的快速查询转义特殊字符的文档。
例如,我想搜索其描述中包含以下文字的内容项:“hot n'chicious”
注意:我尝试过以下转义:
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位。
描述:执行期间发生了未处理的异常 当前的网络请求。请查看堆栈跟踪了解更多信息 有关错误的信息以及它在代码中的起源。
异常详细信息:Sitecore.Data.Query.ParseException:“]”预期在 第67位。
答案 0 :(得分:7)
Here is a post完全按照您的意图行事。基本上,您必须使用转义双引号来包装包含引号的字段值。
var searchTerm = "hot n' tasty";
var query = string.Format("fast:/sitecore/content/Home/Products//*[@ContentDescriptionText=\"%{0}%\"]", searchTerm);
var items = Database.SelectItems(query);
编辑:添加了关于逃避快速查询及其限制的CoolMcGrr参考链接.. here
答案 1 :(得分: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);