私のasp.net-mvc ontrollerではフォームフィールドの値を受け入れ、Luceneライブラリが理解できる文字列を作成します。 次に、このlucene文字列に応じて結果を表示するgetメソッドにリダイレクトします。名前付きルートに(URLエンコードされた)クエリーストリングを追加する必要がありますか?
Luceneの文字列がパターンに{fieldName1:VALUE1 fieldName2:値2 ...}れる:
routes.MapRoute(
"AdvancedSearch",
"AdvancedSearch.mvc/{displayType}/luceneString",
new { controller = "Search", action = "AdvancedSearch",
displayType = "chip", luceneString = "" }
);
だから、私のコントローラキャッチ
私のGlobal.asaxをリダイレクト目標のための次のエントリを有しています投稿はluceneStringを作成し、以下を実行します:
return RedirectToRoute("AdvancedSearch", new
{
Controller = "Search",
action = "AdvancedSearch",
displayType = "chip",
queryString = Url.Encode("company:test name:testname")
});
これは私に500:悪い要求を与えます。 1つのパラメータでも動作しません。 ":"があっても動作しません。
は、私が試した:
- AdvancedSearch.mvc /チップ/会社%の3Atest +名%3AtestName
- AdvancedSearch.mvc /チップ/会社:テスト+名:テスト名
- AdvancedSearch.mvc /チップ/会社:テスト
- AdvancedSearch.mvc /チップ/会社%3Atest 私は の形式でのqueryStringを取るために、このURLを変更する場合にのみ動作します
私は、クエリ文字列を使用する必要がある場合、どのように私は、ルートテーブルにそのようなことを定義することができます私は右に頼らずにエンコーディングを取得するために行う必要があります「?Q =」
AdvancedSearch.mvc/chip?q=company%3Atest+name%3AtestName
?リダイレクトを呼び出すにはどうすればいいですか?
私は答えを持っていないが、あなたはそれがになっていない何かをするASP-MVCを取得しようとしているように聞こえます。ルートは、クエリ文字列を置き換えるRESTfulな方法であると考えられています。私はLuceneがそれを必要とするかもしれないことを理解していますが、あなたが思いつく解決策はどれも、永久的なものになるでしょう。 –
どのように?私が正しいことを理解すれば、私のURLはRESTfullになります。 URLへのリクエストを取得すると、常に同じページが返されます。セッションや何も必要ありません。 URLの最後の部分にクエリ文字列が含まれているだけです。 –
マイポストリクエストはGETリクエストにリダイレクトされます。彼らはまだステートレスになります。私のURLの最後の部分がlucene文字列であるという事実は、RESTレスにしていますか? –