Ho un semplice modulo di ricerca sulla mia pagina _Layout.MVC 5 Html.BeginForm senza modello
Come posso passare facilmente il valore da search-fld al controller? Senza dover creare un modello o ViewModel.
@using (Html.BeginForm("Search", "Home", new { id = "search-fld" }, FormMethod.Post, new { @class = "header-search pull-right" }))
{
@Html.AntiForgeryToken()
<input type="text" placeholder="Search" id="search-fld">
<button type="submit">
<i class="fa fa-search"></i>
</button>
}
Se corro questo allora "cerca-FLD" farsi inviare al controller (offcourse)
forma Usa Ajax invece e ottenere il valore con jQuery?
Sì, quel tipo di lavori. L'unico problema è che l'URL ora è http: // localhost: 52223/e se cerco "asd" passa il parametro e l'URL cambia in http: // localhost: 52223/Search ma voglio dire http : // localhost: 52223/Search/asd e funziona se ho un percorso personalizzato sul controller in questo modo: [Route ("Cerca/{searchString}")] MA poi non funziona poiché non passa il valore in route attributi dal modulo:/Qualche suggerimento? – stibay
Hanno anche un percorso personalizzato mappato in Route.Config. In questo modo: routes.MapRoute ( nome: "Home", url: "{action}/{id}", valori predefiniti: new {controller = "Home", action = "Index", id = UrlParameter.Optional} ); – stibay
Se i nomi corrispondono, vale a dire se si dispone di 'public ActionResult Search (string searchValue)', quindi è necessario anche 'name =" searchValue "' sul proprio input e '[Route (" Cerca/{searchValue} ") ] come percorso. –