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&...¶mn=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.