Estoy intentando usar el ayudante ASP.NET MVC Ajax.BeginForm pero no quiero usar las opciones existentes de inserción de contenido cuando finaliza la llamada. En cambio, quiero usar una función personalizada de JavaScript como devolución de llamada.Cómo usar Ajax.BeginForm MVC helper con resultado JSON?
Esto funciona, pero el resultado que deseo se debe devolver como JSON. Desafortunadamente, el marco solo trata los datos como una cadena. A continuación está el código del cliente. El código del servidor simplemente devuelve un JsonResult con un campo, UppercaseName.
<script type='text/javascript'>
function onTestComplete(content) {
var result = content.get_data();
alert(result.UppercaseName);
}
</script>
<% using (Ajax.BeginForm("JsonTest", new AjaxOptions() {OnComplete = "onTestComplete" })) { %>
<%= Html.TextBox("name") %><br />
<input type="submit" />
<%} %>
En lugar de mostrar el resultado en mayúscula, se muestra indefinido. content.get_data() parece contener el JSON, pero solo en forma de cadena. ¿Cómo hago para convertir esto a un objeto?
Todo esto parece un poco complicado en realidad. ¿Hay una mejor manera de obtener el contenido resultante usando Ajax.BeginForm? Si es tan difícil, puedo omitir Ajax.BeginForm por completo y usar la biblioteca de formularios jQuery.
¿Puede mostrar el código de la acción del controlador? – tvanfosson
La acción del controlador no es el problema. Literalmente es una línea: return Json (new {UppercaseName = name.ToUpper()}); –