Estoy tratando de crear acciones de controlador que devuelvan JSON o html parcial dependiendo de un parámetro. ¿Cuál es la mejor manera de obtener el resultado devuelto a una página MVC de forma asincrónica?
ajax
asp.net-mvc
json
asp.net-ajax
NathanD
fuente
fuente
Creo que debería considerar los AcceptTypes de la solicitud. Lo estoy usando en mi proyecto actual para devolver el tipo de contenido correcto de la siguiente manera.
Su acción en el controlador puede probarlo como en el objeto de solicitud
Luego puede implementar el aspx de la vista para atender el caso de respuesta parcial xhtml.
Luego, en jQuery puede buscarlo pasando el parámetro de tipo como json:
Espero que esto ayude a James
fuente
Otra buena manera de tratar con datos JSON es usar la función getQSON de JQuery. Puedes llamar al
Método del método jquery getJSON simplemente ...
fuente
return Json(new {foo="bar", baz="Blech"});
hace!Encontré un par de problemas al implementar llamadas MVC ajax GET con JQuery que me causaron dolores de cabeza, por lo que compartir soluciones aquí.
JsonRequestBehavior.AllowGet
; sin esto MVC estaba devolviendo un error HTTP 500 (condataType: json
especificado en el cliente).cache: false
a la llamada $ .ajax, de lo contrario obtendrá respuestas HTTP 304 (en lugar de respuestas HTTP 200) y el servidor no procesará su solicitud.JQuery de muestra:
Código MVC de muestra:
fuente
Para responder la otra mitad de la pregunta, puede llamar:
cuando quieres devolver HTML parcial. Solo tendrá que encontrar alguna forma de decidir si la solicitud desea JSON o HTML, tal vez en función de una parte / parámetro de URL.
fuente
Solución alternativa con marco de codificación
Action return json
Controlador
Página de afeitar
Acción return html
Controlador
Página de afeitar
fuente
Es posible que desee echar un vistazo a este artículo muy útil que cubre esto muy bien.
Solo pensé que podría ayudar a las personas que buscan una buena solución a este problema.
http://weblogs.asp.net/rashid/archive/2009/04/15/adaptive-rendering-in-asp-net-mvc.aspx
fuente
PartialViewResult y JSONReuslt heredan de la clase base ActionResult. así que si se decide el tipo de retorno, declare dinámicamente la salida del método como ActionResult.
fuente
Para las personas que se han actualizado a MVC 3, esta es una buena manera de usar MVC3 y Json
fuente
fuente
Enfoque flexible para producir diferentes resultados basados en la solicitud
El
Request.IsAjaxRequest()
método es bastante simple: simplemente comprueba los encabezados HTTP para la solicitud entrante para ver si el valor del encabezado X-Requested-With esXMLHttpRequest
, que se agrega automáticamente por la mayoría de los navegadores y marcos AJAX.Método de extensión personalizado para verificar si la solicitud es para json o no para que podamos llamarla desde cualquier lugar, al igual que el método de extensión Request.IsAjaxRequest ():
Fuente: https://www.safaribooksonline.com/library/view/programming-aspnet-mvc/9781449321932/ch06.html#_javascript_rendering
fuente