2010-03-30 15 views
7

Tengo un formulario de búsqueda simple en mi página maestra y un controlador y una vista de seridor. Estoy tratando de obtener la siguiente ruta para el término de búsqueda cadena "myterm" (por ejemplo): root/Búsqueda/mytermRuta de búsqueda en ASP.NET MVC

La forma en la página maestra:

<% using (Html.BeginForm("SearchResults", "Search", FormMethod.Post, new { id = "search_form" })) 
          { %> 
         <input name="searchTerm" type="text" class="textfield" /> 
         <input name="search" type="submit" value="search" class="button" /> 
         <%} %> 

la acción del controlador :

public ActionResult SearchResults(string searchTerm){...} 

La ruta que estoy usando:

routes.MapRoute(
      "Search", 
      "search/{term}", 
      new { controller = "Search", action = "SearchResults", term = (string)null } 
     ); 

routes.MapRoute(
      "Default", 
      "{controller}/{action}", 
      new { controller = "Home", action = "Index" } 
     ); 

Siempre obtengo la URL "raíz/búsqueda" sin el término de búsqueda, sin importar el término de búsqueda que ingrese.

Gracias.

+0

Supongo que el formulario está realmente bien y solo está agregando una ruta para que pueda llamar a la búsqueda directamente desde una URL ¿verdad? –

Respuesta

3

Está usando id en su etiqueta de beginform y {term} en su ruta.

Los dos deben coincidir.

+0

El ID que estoy usando en el beginform es solo el identificador de formulario, ¿cómo puedo pasar el valor del campo de entrada searchTerm del formulario al beginform? – vobs

3

Así que si lo entiendo correctamente, está tratando de hacer una ruta para que pueda ir a http://www.whatever.com/search/blah y se enrutará a la acción SearchResults con el parámetro searchTerm como "blah".

La siguiente ruta se encargará de que:

routes.MapRoute(
       "Search", 
       "search/{searchTerm}", 
       new { controller = "Search", action = "SearchResults" } 
      ); 

Asegúrese de que la ruta está delante de la ruta por defecto o el valor por defecto será igualada por primera vez. Tenga en cuenta que "término" se cambia a "término de búsqueda" para que coincida con el parámetro en su acción. Esto es necesario.

Cuestiones relacionadas