asp.net-mvc ajax.beginform

asp.net mvc Ajax.BeginForm



asp.net-mvc (2)

Estoy teniendo algunas dificultades con Ajax.BeginForm

Tengo algo como esto en una vista

<% using (Ajax.BeginForm("ActionName", null , null, new { id = "FormName" })) {%> <input type="hidden" value = ''<%= Html.Encode( Model.id) %>'' name="id"/> <textarea id="message" name=message rows="4" style="width: 90%"> </textarea> <% }%}

Y el método de acción es algo así.

[AcceptVerbs(HttpVerbs.Post)] [Authorize] public ActionResult ActionName(int id, string message) { .... }

Estoy tratando de pasar el ''id'' y el ''mensaje'' al método de acción. Estoy pasando ''null'' para routeValues ​​pero no sé qué pasar. Idealmente, estaba tratando de encontrar una sobrecarga que no requiriera valores de ruta pero tomé actionName y htmlattributes (para el nombre del formulario) pero no pude encontrar uno. No quiero agregar ''mensaje'' al modelo de vista y necesito el FormName allí para las operaciones jquery. ¿Cuál es la mejor manera de solucionar este problema?

Oh, olvidé mencionar, esta es la forma en que publico el formulario

$.post($("#FormName").attr(''action''), $("#FormName").serialize(), function(result) { $("#correspondingDiv").html(result); } );


Tratar:

<% using (Ajax.BeginForm("ActionName", null)) {%> <input type="hidden" value = ''<%= Html.Encode( Model.id) %>'' name="id"/> <textarea id="message" name=message rows="4" style="width: 90%"> </textarea> <% }%}

Creo que está complicando demasiado el problema, la identificación y el mensaje se completarán en la devolución de los campos del formulario, por lo que no es necesario especificarlos en la declaración del formulario. También es posible que desee probar Html.BeginForm() menos que realmente desee una respuesta Ajax.


Utilice esta sobrecarga: http://msdn.microsoft.com/en-us/library/dd470605.aspx

Ajax.BeginForm( string "ActionName", string "ControllerName", new routevalues {id="IDValue",message="MyMessage"}, new AjaxOptions {OnBegin=[someFunction], OnFailure=[failureFunction] }, new { id = "FormName" } )