tutorial tag net mvc form for entre diferencias asp asp.net-mvc forms asp.net-mvc-routing

tag - Utilice el motor de enrutamiento para presentaciones de formularios en ASP.NET MVC Preview 4



web forms c# (3)

En su ruta, elimine la parte {paramName} de la URL. Debería ser:

TestController.mvc / TestAction

Como esa es la URL a la que desea enviar la solicitud. Su formulario se publicará en esa URL. Los valores de formulario publicados se asignan automáticamente a los parámetros de un método de acción, por lo que no debe preocuparse de que esos datos no pasen a su método de acción.

Estoy usando ASP.NET MVC Preview 4 y me gustaría saber cómo usar el motor de enrutamiento para envíos de formularios.

Por ejemplo, tengo una ruta como esta:

routes.MapRoute( "TestController-TestAction", "TestController.mvc/TestAction/{paramName}", new { controller = "TestController", action = "TestAction", id = "TestTopic" } );

Y una declaración de formulario que se ve así:

<% using (Html.Form("TestController", "TestAction", FormMethod.Get)) { %> <input type="text" name="paramName" /> <input type="submit" /> <% } %>

que rinde a:

<form method="get" action="/TestController.mvc/TestAction"> <input type="text" name="paramName" /> <input type="submit" /> </form>

La URL resultante de un envío de formulario es:

localhost/TestController.mvc/TestAction?paramName=value

¿Hay alguna forma de tener esta ruta de envío de formularios a la URL deseada de:

localhost/TestController.mvc/TestAction/value

Las únicas soluciones en las que puedo pensar son crear una acción separada que solo verifique los parámetros de solicitud o que use JavaScript.


Solución:

public ActionResult TestAction(string paramName) { if (!String.IsNullOrEmpty(Request["paramName"])) { return RedirectToAction("TestAction", new { paramName = Request["paramName"]}); } /* ... */ }


Mi entendimiento es que así es como funciona HTML. Si haces <form url="foo" method="get"> y publicas el formulario, ¿el formulario publicará foo?

param1=value1&...&paramn=valuen

No tiene nada que ver con MVC.

Además, ¿qué parte de REST viola esa URL? No es una URL bonita , pero por definición estricta de REST, puede ser RESTful. REST no especifica que los parámetros de consulta tengan que estar en un segmento de URL. Y en este caso, esos son parámetros de consulta.