none
Como tener un form el cual funcione sin un Model asociado y que apunte a un Controlador con una url rooteada en MVC 4 RRS feed

  • Pregunta

  • Hola

    Tengo el siguiente Form con un textbox y un boton submit
    @using (Html.BeginForm("Search", "Home", FormMethod.Get, new { id = "frmSearch" }))
                 {
                     <input type="text" name="search" value="" />
                     <input type="submit" value="Buscar" />
                 }
    Este apunta al siguiente controlador (Home):
    public ActionResult Search(string search)
            {
                return View("Index", m);
            }
    El problema que tengo es que la url a la cual redirecciona es:
    http://localhost/Home/Search?search=texto+buscado

    Necesito que la la url que apunte al controlador sea asi:
    http://localhost/Home/texto+buscado

    He intentado configurando un rooteador en RegisterRoutes pero no logro conseguirlo

    routes.MapRoute(
                    name: "HomeSearch",
                    url: "Home/{search}",
                    defaults: new { controller = "Home", action = "Search", }
                );

    Como puedo lograr esto?

    Gracias

    miércoles, 11 de diciembre de 2013 15:10

Todas las respuestas

  • Hola Zr,

    Prueba a añadir esto al principio de la funcion RegisterRoutes.

    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    Espero que te sirva, salu2!!


    Jose Alberto Marti

    miércoles, 11 de diciembre de 2013 16:42
  • Hola Zr,

    Prueba a añadir esto al principio de la funcion RegisterRoutes.

    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    Espero que te sirva, salu2!!


    Jose Alberto Marti

    Hola, so ya lo tiene... Lo trae por defecto!!! Aparte no creo que tenga que ver ya que no estoy consultando nada .axd!!!
    miércoles, 11 de diciembre de 2013 20:35
  • Hola Zr,

    Tenias razón, perdona. El fallo está en que estás utilizando un Html.BeginForm. Utiliza un Html.BeginRouteForm y te funcionará.

    Espero que te sirva, salu2!!


    Jose Alberto Marti

    jueves, 12 de diciembre de 2013 8:03
  • Hola Zr,

    Tenias razón, perdona. El fallo está en que estás utilizando un Html.BeginForm. Utiliza un Html.BeginRouteForm y te funcionará.

    Espero que te sirva, salu2!!


    Jose Alberto Marti


    Hola y gracias... Sigo sin poder logrando!!! Sigue mostranto el parametro "search" como un querystring y elemento de la  url, es decir, "dominio.com/home/{search}"...
    sábado, 14 de diciembre de 2013 1:59
  • Has probado a cambiar FormMethod.Get, por un

    FormMethod.Post?? Además define tu acción como...

    [HttpPost]

    public ActionResult Search(string search)


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    lunes, 16 de diciembre de 2013 0:19
    Moderador