質問

ASP.NET MVCアプリケーションには、次のGET入力フィールドがあります。

<% using (Html.BeginForm("Search", "Products", FormMethod.Get) { %>
   <input type="text" name="searchQuery" id="searchQuery" />
<% } %

ルートに行きたい:

routes.MapRoute("ProductSearchRoute", 
    "Products/Search/{searchQuery}/{pageNumber}", 
new { controller = "Products", action = "Search", pageNumber = 1 });

問題は、クエリ文字列として/ Productsに送られることです。製品?searchQuery =モーター。 ProductSearchRouteを使用して代わりに/ Products / Search / Motoroilを形成するにはどうすればよいですか?

役に立ちましたか?

解決

あなたが正しく理解している場合、フォームの入力に基づいて、フォームが投稿する場所を動的に変更しようとしていますか?

フォームのターゲット属性を変更するには、このためにJavaScriptを使用する必要があります。 BeginForm()は、htmlの観点からは静的なformタグをレンダリングするためのものです。

他のヒント

試すことができます:

<% using (Html.BeginRouteForm("ProductSearchRoute", FormMethod.Get)) %>

親切、

ダン

public ActionResult SearchQuery (string searchQuery)
{
    return RedirectToAction (searchQuery, "/Products/Search" );
}

public ActionResult Search (string searchQuery)
{
    return View();
}

@Daniel Elliottが提案したように、BeginRouteFormを使用します。 URLを適切に生成するには、ルートテーブルで定義されているのと同じ名前でルート値を設定する必要があります。

@using (Html.BeginRouteForm("ProductSearchRoute", new { searchQuery= "my query", pageNumber = 1 })
{

}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top