Frage

In meinem ASP.NET MVC-Anwendung habe ich Folgendes BEKOMMEN Eingabefeld:

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

Ich will, dass das gehen auf der route:

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

Das problem ist, es geht um /Produkte als query-string, z.B.Produkte?Suchergebniss=Motoroil.Wie bekomme ich es, um meine ProductSearchRoute und anstatt der form /Produkte/Search/Motoroil ?

War es hilfreich?

Lösung

Wenn ich Sie richtig verstehe, Sie versuchen, die Lage, die Form Posts, dynamisch zu verändern, basierend auf den Eingaben des Formulars?

Sie müssen Javascript verwenden hierfür die Form des Zielattribut zu ändern. Die Begin () für die Form-Tag-Rendering, die von einer HTML-Perspektive statisch ist.

Andere Tipps

Sie könnten versuchen:

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

Güte,

Dan

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

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

Wie @Daniel Elliott vorgeschlagen, verwenden Sie BeginRouteForm.Um Ihre URL zu generieren, richtig, Sie haben zu legen Sie die routevalues mit dem gleichen Namen definiert in Ihrer ROUTING-Tabelle.

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

}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top