私はURLを持っています:
出荷/検索/{searchType}/{searchValue}
およびコントローラー アクション:
// ShipmentSearchType is an enum ... PartNumber, CustomerOrder, etc...
ActionResult Search(ShipmentSearchType searchType, string searchValue)
つまり、次のようなきれいな URL を入力できます。
出荷/検索/部品番号/Widget-01
そして、その部品番号を持つすべての出荷のリストを取得します。
今、私はアプリケーションの忙しい作業を行っており、部品番号を尋ねる検索フォームを作成しているところまで来ました。これは検索に投稿されます。だから基本的に私は欲しい:
Shipment/Search/PartNumber/{user-input-from-textbox}
残念ながら、上記の URL にフォームを取得できません。サーバー側で生成する必要があります。代わりに、ポスト リクエストの値として {user-input} を使用して、Shipment/Search/PartNumber にフォーム ポストを戻します。
だから私は次のようになります:
[AcceptVerbs(HttpVerbs.Post)]
ActionResult Search(ShipmentSearchType searchType, string searchValue, bool? post)
{
return RedirectToAction("Search", new { searchType = searchType, searchValue = searchValue});
}
2つのこと:
1) クライアント側で JavaScript を使用せずに検索の post メソッドを回避する方法はありますか?
2) ブール?ポストの値はそこにあるため、署名が異なります。それは明らかに醜いです。これを行うよりスマートな方法はありますか?
ありがとう!
編集:
「残念ながら、フォームからそれを行うことはできないと思います (少なくとも JavaScript なしでは)。」& 「javascript を使わずに投稿を回避する方法はありますか?」
これは少しあいまいでした。私が言いたいのは、フォームにURL /Shipment/Search/PartNumber/{value-from-textbox} を生成させ、それをフォーム メソッド get に持たせることができないと思うということです。これはjavascriptで簡単に実行できると思います(送信アクションをオーバーライドしてURLを動的に構築します)が、私はそれを行っていません。投稿するのに JavaScript が必要だという意味ではありません。