Tengo un proceso de configuración de varios pasos en el que me gustaría pasar los argumentos de cadena de consulta anexados a la URL solo si son relevantes.MVC3 Html.BeginForm - pasar argumentos como RouteValueDictionary falla
http://localhost:6618/Account/Profile?wizard=true&cats=dogs
@using(Html.BeginForm())
funcionaba muy bien. Dio como resultado: <form action="/Account/Profile?setup=true&cats=dogs" method="post">
es decir, pasó a la acción POST cualquiera de los parámetros de la cadena de consulta original, y luego en esa acción del Controlador pude elegir cuáles eran relevantes para pasar a mi próximo paso, o necesario agregar, añadiendo a los Valores de Ruta y un RedirectToResult.
Sin embargo, tengo que asignar una clase a mi formulario para fines de diseño.
I intentado:
@using(Html.BeginForm("Profile", "Account", args, FormMethod.Post, new { @class = "mainForm" }))
que produce:
<form action="/Account/Profile?Count=1&Keys=System.Collections.Generic.Dictionary%602%2BKeyCollection%5BSystem.String%2CSystem.Object%5D&Values=System.Collections.Generic.Dictionary%602%2BValueCollection%5BSystem.String%2CSystem.Object%5D" class="mainForm" method="post">
(args
fue generado por un filtro, y es un RouteValueDictionary). La especificación http://msdn.microsoft.com/en-us/library/dd505151.aspx indica que puede pasar argumentos con System.Web.Routing.RouteValueDictionary.
Lo que yo quiero es <form action="/Account/Profile?setup=true&cats=dogs" class="mainForm" method="post">
debería mencionar que preferiría no hacer algo como pasa en new {key = value}
lugar, ya que hay una buena cantidad de lógica para determinar lo que voy a pasar a lo largo con el siguiente paso.
¿Alguna sugerencia sobre qué hacer aquí?
Estoy obstruido por esta tarea aparentemente simple, y seguramente me falta algo terriblemente obvio.
Tal vez la respuesta en esta otra publicación podría ayudar un poco? http://stackoverflow.com/questions/1219223/asp-net-mvc-getting-html-beginform-to-remember-querystring-params-when-submi – summea