4

おそらく私は盲目ですが、Sitecore の高速クエリで特殊文字をエスケープする方法に関するドキュメントが見つかりません。

たとえば、説明に次のテキストが含まれるコンテンツ アイテムを検索したいとします。

注:次のエスケープを試みました:

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 に答える