SlideShare una empresa de Scribd logo
1 de 18
Descargar para leer sin conexión
AJAX y ASP.NET MVC
Danae Aguilar Guzmán
MCT, MS, MCTS, MCP
danaeaguilar@gmail.com
Requests AJAX con jQuery
 Cuando hacemos requests con AJAX es
recomendado considerar el caso en que el
usuario no tenga habilitado Javascript
1. Creamos los controladores, vistas y vistas
parciales
2. Agregamos el placeholder donde
mostraremos la vista parcial
@Html.ActionLink("Mostrar datos",
"AccionMostrar", null,
new { id = "linkMostrar" })
<div id="resultado"></div>
Requests AJAX con jQuery
3. Agregamos un archivo JavaScript que
cargará la vista parcial
 Se cargará usando load
 Usamos preventDefault para evitar el flujo
normal del link.
$(document).ready(function () {
$('#linkMostrar').click(function (event) {
event.preventDefault();
var url = $(this).attr('href');
$('#resultado').load(url);
});
});
Requests AJAX con jQuery
4. Agregamos el JavaScript a nuestra página:
@section scripts {
<script type="text/javascript"
src="@Url.Content("~/scripts/EjemploAjax.js")">
</script>
}
Requests AJAX con jQuery
5. Validamos si el request se hizo mediante
AJAX:
Si quisieramos recargar la página hacemos un
redirect:
return RedirectToAction("Index");
public ActionResult MostrarDatos()
{
if (Request.IsAjaxRequest())
{
return PartialView();
}
return View();
}
Formularios con AJAX
Creamos un formulario:
Especificamos la acción del controller con
Url.Action
<form method="post" id="comentarios"
action="@Url.Action("AregarComentario")">
@Html.TextArea("Comentario",
new { rows = 5, cols = 50 })
<br />
<input value="Agregar Comentario"
type="submit" />
</form>
Formularios con AJAX
El script:
Con preventDefault() evitamos el flujo de submit
del formulario.
Obtenemos la accion del atributo action del
formulario.
Usamos $.post para invocar la acción con AJAX
$(document).ready(function () {
$('#comentarios').submit(function (event) {
event.preventDefault();
var datos = $(this).serialize();
var url = $(this).attr('action');
$.post(url, datos, function (response) {
$('#comentarios').append(response);
});
});
});
Formularios con AJAX
En el controller:
 Tendremos la acción POST que recibirá los
datos y mostrará una vista parcial
[HttpPost]
public ActionResult AddComment(string comentario)
{
_comentarios.Add(comentario);
if (Request.IsAjaxRequest())
{
ViewBag.Comentario = comentario;
return PartialView();
}
return RedirectToAction("Index");
}
ASP.NET MVC Ajax helpers
• Ajax.ActionLink, Crea un hyperlink AJAX a
una acción del controller
• Ajax.RouteLink, Similar a Ajax.ActionLink,
pero genera un link a una ruta
• Ajax.BeginForm, Crea un formulario que
envía sus datos usando Ajax
• Ajax.BeginRouteForm, Similar a
Ajax.BeginForm, pero crea un formulario que
envía sus datos a una ruta
• Ajax.GlobalizationScript, Crea un elemento
script HTML que referencia un script con
información de cultura
• Ajax.JavaScriptStringEncode, Realiza
encoding a una cadena para que pueda usarse
seguramente dentro JavaScript
ASP.NET MVC Ajax helpers
Los Helper pueden usar jQuery o Microsoft
Ajax
ASP.NET MVC Ajax helpers
Ajax.ActionLink
@section head {
<script type="text/javascript"
src="@Url.Content(
"~/scripts/jquery.unobtrusive-ajax.js")">
</script>
}
@Ajax.ActionLink("Mostrar Datos", "MostrarDatos",
new AjaxOptions
{
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "divDatos"
})
<div id="divDatos"></div>
ASP.NET MVC Ajax helpers
Ajax.BeginForm
<ul id="comments"></ul>
@using (Ajax.BeginForm("AgregarComentario",
new AjaxOptions
{
UpdateTargetId = "ulComentarios",
InsertionMode = InsertionMode.InsertAfter
}))
{
@Html.TextArea("comentario",
new { rows = 5, cols = 50 })
<br />
<input type="submit" value="Agregar Comentario" />
}
Ajax con JSON
Retornamos JSON:
public ActionResult Details(int id)
{
Speaker speaker =
_repositorio.BuscarSpeaker(id);
return Json(speaker,
JsonRequestBehavior.AllowGet);
}
Ajax con JSON
El script invocará con AJAX, podemos usar
$.getJSON:
$(document).ready(function () {
$("ul.speakers a").click(function (e) {
e.preventDefault();
$("#indicator").show();
var url = $(this).attr('href');
$.getJSON(url, null, function (speaker) {
$("#indicator").hide();
alert(speaker.Nombre);
});
});
});
Ajax con JSON
En caso de no soportar scripts en el cliente,
retornaremos una vista en vez de JSON
public ActionResult Details(int id)
{
var speaker = _repositorio.BuscarSpeaker(id);
if (Request.IsAjaxRequest())
{
return Json(speaker,
JsonRequestBehavior.AllowGet);
}
return View(speaker);
}
Ajax con JSON
Implementando un atributo
AceptaAjaxAttribute
[AttributeUsage(AttributeTargets.Class |
AttributeTargets.Method)]
public class AceptaAjaxAttribute :
ActionMethodSelectorAttribute
{
public override bool IsValidForRequest(
ControllerContext controllerContext,
MethodInfo methodInfo)
{
return controllerContext.HttpContext
.Request.IsAjaxRequest();
}
}
Ajax con JSON
Usando el atributo AceptaAjaxAttribute
[AceptaAjax]
public ActionResult Detalles(int id)
{
var speaker = _repositorio.BuscarSpeaker(id);
return Json(speaker,
JsonRequestBehavior.AllowGet);
}
[ActionName("Detalles")]
public ActionResult Detalles_SinAjax(int id)
{
var speaker = _repositorio.BuscarSpeaker(id);
return View(speaker);
}
Ajax con JSON
Autocompletar
Necesitaremos jQueryUI
$(document).ready(function () {
var autocompleteUrl = '@Url.Action("Buscar")';
$("input#ciudad").autocomplete({
source: autocompleteUrl,
minLength: 2,
select: function (event, ui) {
alert("Selected " + ui.item.label);
}
});
});

Más contenido relacionado

La actualidad más candente

Liferay versión 6.1 Trabajando con LDAP, introducción
Liferay versión 6.1  Trabajando con LDAP, introducciónLiferay versión 6.1  Trabajando con LDAP, introducción
Liferay versión 6.1 Trabajando con LDAP, introducciónEmatiz Tecnología, S.L.
 
Webinar: Base de Datos en tiempo real con MeteorJS
Webinar: Base de Datos en tiempo real con MeteorJSWebinar: Base de Datos en tiempo real con MeteorJS
Webinar: Base de Datos en tiempo real con MeteorJSArsys
 
Workshop 7: Single Page Applications
Workshop 7: Single Page ApplicationsWorkshop 7: Single Page Applications
Workshop 7: Single Page ApplicationsVisual Engineering
 
la mejor forma de Conectar c# con mysql con archivos de configuracion
 la mejor forma de Conectar c# con mysql con archivos de configuracion  la mejor forma de Conectar c# con mysql con archivos de configuracion
la mejor forma de Conectar c# con mysql con archivos de configuracion juandavid1118
 
Arquitectura en aplicaciones Angular y buenas practicas.
Arquitectura en aplicaciones Angular y buenas practicas.Arquitectura en aplicaciones Angular y buenas practicas.
Arquitectura en aplicaciones Angular y buenas practicas.Germán Küber
 

La actualidad más candente (20)

Java servlets
Java servletsJava servlets
Java servlets
 
Aplicación abc. asp net mvc 3
Aplicación abc. asp net mvc 3Aplicación abc. asp net mvc 3
Aplicación abc. asp net mvc 3
 
Liferay versión 6.1 Trabajando con LDAP, introducción
Liferay versión 6.1  Trabajando con LDAP, introducciónLiferay versión 6.1  Trabajando con LDAP, introducción
Liferay versión 6.1 Trabajando con LDAP, introducción
 
Webinar: Base de Datos en tiempo real con MeteorJS
Webinar: Base de Datos en tiempo real con MeteorJSWebinar: Base de Datos en tiempo real con MeteorJS
Webinar: Base de Datos en tiempo real con MeteorJS
 
Liferay 6.1 Service Builder
Liferay 6.1  Service BuilderLiferay 6.1  Service Builder
Liferay 6.1 Service Builder
 
Trabajando con imagenes en liferay 6.1
Trabajando con imagenes en liferay 6.1Trabajando con imagenes en liferay 6.1
Trabajando con imagenes en liferay 6.1
 
Workshop 7: Single Page Applications
Workshop 7: Single Page ApplicationsWorkshop 7: Single Page Applications
Workshop 7: Single Page Applications
 
la mejor forma de Conectar c# con mysql con archivos de configuracion
 la mejor forma de Conectar c# con mysql con archivos de configuracion  la mejor forma de Conectar c# con mysql con archivos de configuracion
la mejor forma de Conectar c# con mysql con archivos de configuracion
 
Jdbc (Java Database Connectivity)
Jdbc (Java Database Connectivity)Jdbc (Java Database Connectivity)
Jdbc (Java Database Connectivity)
 
Reportes
ReportesReportes
Reportes
 
Trabajo de jdbc
Trabajo de jdbcTrabajo de jdbc
Trabajo de jdbc
 
Java Web Lección 02 - JSP
Java Web Lección 02 - JSPJava Web Lección 02 - JSP
Java Web Lección 02 - JSP
 
Arquitectura en aplicaciones Angular y buenas practicas.
Arquitectura en aplicaciones Angular y buenas practicas.Arquitectura en aplicaciones Angular y buenas practicas.
Arquitectura en aplicaciones Angular y buenas practicas.
 
Javascript y AJAX en Wordpress
Javascript y AJAX en WordpressJavascript y AJAX en Wordpress
Javascript y AJAX en Wordpress
 
Presentación web en 4 capas
Presentación web en 4 capasPresentación web en 4 capas
Presentación web en 4 capas
 
SQL en Visual Studio
SQL en Visual StudioSQL en Visual Studio
SQL en Visual Studio
 
Web services
Web servicesWeb services
Web services
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Curso AngularJS - 4. filtros y servicios
Curso AngularJS - 4. filtros y serviciosCurso AngularJS - 4. filtros y servicios
Curso AngularJS - 4. filtros y servicios
 
Curso AngularJS - 7. temas avanzados
Curso AngularJS - 7. temas avanzadosCurso AngularJS - 7. temas avanzados
Curso AngularJS - 7. temas avanzados
 

Similar a ASP.NET MVC - AJAX

Similar a ASP.NET MVC - AJAX (20)

Web de noticias en Ajax
Web de noticias en AjaxWeb de noticias en Ajax
Web de noticias en Ajax
 
Ajax
AjaxAjax
Ajax
 
Presentacion ajax
Presentacion   ajaxPresentacion   ajax
Presentacion ajax
 
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control ToolkitDesarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
 
AJAX EN CURSO PHP
AJAX EN CURSO PHPAJAX EN CURSO PHP
AJAX EN CURSO PHP
 
Mi app-asp-net-mvc2
Mi app-asp-net-mvc2Mi app-asp-net-mvc2
Mi app-asp-net-mvc2
 
Clase 5 AJAX - Desarrollo de aplicaciones móviles
Clase 5  AJAX - Desarrollo de aplicaciones móvilesClase 5  AJAX - Desarrollo de aplicaciones móviles
Clase 5 AJAX - Desarrollo de aplicaciones móviles
 
Jquery para principianes
Jquery para principianesJquery para principianes
Jquery para principianes
 
J M E R L I N P H P
J M E R L I N P H PJ M E R L I N P H P
J M E R L I N P H P
 
10. consumiendo datos
10. consumiendo datos10. consumiendo datos
10. consumiendo datos
 
ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3
 
Hands-on Spring 3: The next generation
Hands-on Spring 3: The next generationHands-on Spring 3: The next generation
Hands-on Spring 3: The next generation
 
Ajax
AjaxAjax
Ajax
 
Manual De Ajax En Espanol
Manual De Ajax En EspanolManual De Ajax En Espanol
Manual De Ajax En Espanol
 
Esctructura basica-pagina-asp
Esctructura basica-pagina-aspEsctructura basica-pagina-asp
Esctructura basica-pagina-asp
 
J query
J queryJ query
J query
 
Ajax
AjaxAjax
Ajax
 
Paginas web diseño donamico.pptx
Paginas web diseño donamico.pptxPaginas web diseño donamico.pptx
Paginas web diseño donamico.pptx
 
Ingresar y obtener información de base de datos con php a través de ajax arch-20
Ingresar y obtener información de base de datos con php a través de ajax arch-20Ingresar y obtener información de base de datos con php a través de ajax arch-20
Ingresar y obtener información de base de datos con php a través de ajax arch-20
 
6.angular js
6.angular js6.angular js
6.angular js
 

Más de Danae Aguilar Guzmán

WPF 09. procesos asíncronos y programación paralela
WPF 09. procesos asíncronos y programación paralelaWPF 09. procesos asíncronos y programación paralela
WPF 09. procesos asíncronos y programación paralelaDanae Aguilar Guzmán
 
WPF 08 - manejo y vinculación de datos
WPF 08 - manejo y vinculación de datosWPF 08 - manejo y vinculación de datos
WPF 08 - manejo y vinculación de datosDanae Aguilar Guzmán
 
WPF 07 - gráficos, animación y multimedia
WPF 07 - gráficos, animación y multimediaWPF 07 - gráficos, animación y multimedia
WPF 07 - gráficos, animación y multimediaDanae Aguilar Guzmán
 
WPF 06 - personalizando los controles de interfaz de usuario
WPF 06 -  personalizando los controles de interfaz de usuarioWPF 06 -  personalizando los controles de interfaz de usuario
WPF 06 - personalizando los controles de interfaz de usuarioDanae Aguilar Guzmán
 
WPF 04 - reutilizando recursos y estilos en una aplicación WPF
WPF 04 -  reutilizando recursos y estilos en una aplicación WPF WPF 04 -  reutilizando recursos y estilos en una aplicación WPF
WPF 04 - reutilizando recursos y estilos en una aplicación WPF Danae Aguilar Guzmán
 
WPF 02 - construyendo una interfaz de usuario
WPF 02  - construyendo una interfaz de usuarioWPF 02  - construyendo una interfaz de usuario
WPF 02 - construyendo una interfaz de usuarioDanae Aguilar Guzmán
 
ASP.NET MVC - bundling y minification
ASP.NET MVC - bundling y minificationASP.NET MVC - bundling y minification
ASP.NET MVC - bundling y minificationDanae Aguilar Guzmán
 
ASP.NET MVC - implementando globalizacion and localizacion
ASP.NET MVC - implementando globalizacion and localizacionASP.NET MVC - implementando globalizacion and localizacion
ASP.NET MVC - implementando globalizacion and localizacionDanae Aguilar Guzmán
 
Crecimiento profesional como desarrollador de software
Crecimiento profesional como desarrollador de softwareCrecimiento profesional como desarrollador de software
Crecimiento profesional como desarrollador de softwareDanae Aguilar Guzmán
 
09. Creando interfaces de usuario animadas y adaptables
09. Creando interfaces de usuario animadas y adaptables09. Creando interfaces de usuario animadas y adaptables
09. Creando interfaces de usuario animadas y adaptablesDanae Aguilar Guzmán
 
05. Creando e implementando objetos y métodos
05. Creando e implementando objetos y métodos05. Creando e implementando objetos y métodos
05. Creando e implementando objetos y métodosDanae Aguilar Guzmán
 
03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQuery03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQueryDanae Aguilar Guzmán
 

Más de Danae Aguilar Guzmán (20)

Microsoft HoloLens
Microsoft HoloLensMicrosoft HoloLens
Microsoft HoloLens
 
WPF 09. procesos asíncronos y programación paralela
WPF 09. procesos asíncronos y programación paralelaWPF 09. procesos asíncronos y programación paralela
WPF 09. procesos asíncronos y programación paralela
 
WPF 08 - manejo y vinculación de datos
WPF 08 - manejo y vinculación de datosWPF 08 - manejo y vinculación de datos
WPF 08 - manejo y vinculación de datos
 
WPF 07 - gráficos, animación y multimedia
WPF 07 - gráficos, animación y multimediaWPF 07 - gráficos, animación y multimedia
WPF 07 - gráficos, animación y multimedia
 
WPF 06 - personalizando los controles de interfaz de usuario
WPF 06 -  personalizando los controles de interfaz de usuarioWPF 06 -  personalizando los controles de interfaz de usuario
WPF 06 - personalizando los controles de interfaz de usuario
 
WPF 05 - triggers y eventos
WPF 05 - triggers y eventosWPF 05 - triggers y eventos
WPF 05 - triggers y eventos
 
WPF 04 - reutilizando recursos y estilos en una aplicación WPF
WPF 04 -  reutilizando recursos y estilos en una aplicación WPF WPF 04 -  reutilizando recursos y estilos en una aplicación WPF
WPF 04 - reutilizando recursos y estilos en una aplicación WPF
 
WPF 03 - controles WPF
WPF 03 - controles WPF WPF 03 - controles WPF
WPF 03 - controles WPF
 
WPF 02 - construyendo una interfaz de usuario
WPF 02  - construyendo una interfaz de usuarioWPF 02  - construyendo una interfaz de usuario
WPF 02 - construyendo una interfaz de usuario
 
WPF 01 - introducción
WPF 01 -  introducciónWPF 01 -  introducción
WPF 01 - introducción
 
ASP.NET MVC - bundling y minification
ASP.NET MVC - bundling y minificationASP.NET MVC - bundling y minification
ASP.NET MVC - bundling y minification
 
ASP.NET MVC - implementando globalizacion and localizacion
ASP.NET MVC - implementando globalizacion and localizacionASP.NET MVC - implementando globalizacion and localizacion
ASP.NET MVC - implementando globalizacion and localizacion
 
Crecimiento profesional como desarrollador de software
Crecimiento profesional como desarrollador de softwareCrecimiento profesional como desarrollador de software
Crecimiento profesional como desarrollador de software
 
09. Creando interfaces de usuario animadas y adaptables
09. Creando interfaces de usuario animadas y adaptables09. Creando interfaces de usuario animadas y adaptables
09. Creando interfaces de usuario animadas y adaptables
 
08. Propiedades de estilo HTML box
08. Propiedades de estilo HTML box08. Propiedades de estilo HTML box
08. Propiedades de estilo HTML box
 
07. Usando CSS3
07. Usando CSS307. Usando CSS3
07. Usando CSS3
 
06. Creando un proceso web worker
06. Creando un proceso web worker 06. Creando un proceso web worker
06. Creando un proceso web worker
 
05. Creando e implementando objetos y métodos
05. Creando e implementando objetos y métodos05. Creando e implementando objetos y métodos
05. Creando e implementando objetos y métodos
 
04. Implementando APIs HTML5
04. Implementando APIs HTML5 04. Implementando APIs HTML5
04. Implementando APIs HTML5
 
03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQuery03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQuery
 

ASP.NET MVC - AJAX

  • 1. AJAX y ASP.NET MVC Danae Aguilar Guzmán MCT, MS, MCTS, MCP danaeaguilar@gmail.com
  • 2. Requests AJAX con jQuery  Cuando hacemos requests con AJAX es recomendado considerar el caso en que el usuario no tenga habilitado Javascript 1. Creamos los controladores, vistas y vistas parciales 2. Agregamos el placeholder donde mostraremos la vista parcial @Html.ActionLink("Mostrar datos", "AccionMostrar", null, new { id = "linkMostrar" }) <div id="resultado"></div>
  • 3. Requests AJAX con jQuery 3. Agregamos un archivo JavaScript que cargará la vista parcial  Se cargará usando load  Usamos preventDefault para evitar el flujo normal del link. $(document).ready(function () { $('#linkMostrar').click(function (event) { event.preventDefault(); var url = $(this).attr('href'); $('#resultado').load(url); }); });
  • 4. Requests AJAX con jQuery 4. Agregamos el JavaScript a nuestra página: @section scripts { <script type="text/javascript" src="@Url.Content("~/scripts/EjemploAjax.js")"> </script> }
  • 5. Requests AJAX con jQuery 5. Validamos si el request se hizo mediante AJAX: Si quisieramos recargar la página hacemos un redirect: return RedirectToAction("Index"); public ActionResult MostrarDatos() { if (Request.IsAjaxRequest()) { return PartialView(); } return View(); }
  • 6. Formularios con AJAX Creamos un formulario: Especificamos la acción del controller con Url.Action <form method="post" id="comentarios" action="@Url.Action("AregarComentario")"> @Html.TextArea("Comentario", new { rows = 5, cols = 50 }) <br /> <input value="Agregar Comentario" type="submit" /> </form>
  • 7. Formularios con AJAX El script: Con preventDefault() evitamos el flujo de submit del formulario. Obtenemos la accion del atributo action del formulario. Usamos $.post para invocar la acción con AJAX $(document).ready(function () { $('#comentarios').submit(function (event) { event.preventDefault(); var datos = $(this).serialize(); var url = $(this).attr('action'); $.post(url, datos, function (response) { $('#comentarios').append(response); }); }); });
  • 8. Formularios con AJAX En el controller:  Tendremos la acción POST que recibirá los datos y mostrará una vista parcial [HttpPost] public ActionResult AddComment(string comentario) { _comentarios.Add(comentario); if (Request.IsAjaxRequest()) { ViewBag.Comentario = comentario; return PartialView(); } return RedirectToAction("Index"); }
  • 9. ASP.NET MVC Ajax helpers • Ajax.ActionLink, Crea un hyperlink AJAX a una acción del controller • Ajax.RouteLink, Similar a Ajax.ActionLink, pero genera un link a una ruta • Ajax.BeginForm, Crea un formulario que envía sus datos usando Ajax • Ajax.BeginRouteForm, Similar a Ajax.BeginForm, pero crea un formulario que envía sus datos a una ruta • Ajax.GlobalizationScript, Crea un elemento script HTML que referencia un script con información de cultura • Ajax.JavaScriptStringEncode, Realiza encoding a una cadena para que pueda usarse seguramente dentro JavaScript
  • 10. ASP.NET MVC Ajax helpers Los Helper pueden usar jQuery o Microsoft Ajax
  • 11. ASP.NET MVC Ajax helpers Ajax.ActionLink @section head { <script type="text/javascript" src="@Url.Content( "~/scripts/jquery.unobtrusive-ajax.js")"> </script> } @Ajax.ActionLink("Mostrar Datos", "MostrarDatos", new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "divDatos" }) <div id="divDatos"></div>
  • 12. ASP.NET MVC Ajax helpers Ajax.BeginForm <ul id="comments"></ul> @using (Ajax.BeginForm("AgregarComentario", new AjaxOptions { UpdateTargetId = "ulComentarios", InsertionMode = InsertionMode.InsertAfter })) { @Html.TextArea("comentario", new { rows = 5, cols = 50 }) <br /> <input type="submit" value="Agregar Comentario" /> }
  • 13. Ajax con JSON Retornamos JSON: public ActionResult Details(int id) { Speaker speaker = _repositorio.BuscarSpeaker(id); return Json(speaker, JsonRequestBehavior.AllowGet); }
  • 14. Ajax con JSON El script invocará con AJAX, podemos usar $.getJSON: $(document).ready(function () { $("ul.speakers a").click(function (e) { e.preventDefault(); $("#indicator").show(); var url = $(this).attr('href'); $.getJSON(url, null, function (speaker) { $("#indicator").hide(); alert(speaker.Nombre); }); }); });
  • 15. Ajax con JSON En caso de no soportar scripts en el cliente, retornaremos una vista en vez de JSON public ActionResult Details(int id) { var speaker = _repositorio.BuscarSpeaker(id); if (Request.IsAjaxRequest()) { return Json(speaker, JsonRequestBehavior.AllowGet); } return View(speaker); }
  • 16. Ajax con JSON Implementando un atributo AceptaAjaxAttribute [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)] public class AceptaAjaxAttribute : ActionMethodSelectorAttribute { public override bool IsValidForRequest( ControllerContext controllerContext, MethodInfo methodInfo) { return controllerContext.HttpContext .Request.IsAjaxRequest(); } }
  • 17. Ajax con JSON Usando el atributo AceptaAjaxAttribute [AceptaAjax] public ActionResult Detalles(int id) { var speaker = _repositorio.BuscarSpeaker(id); return Json(speaker, JsonRequestBehavior.AllowGet); } [ActionName("Detalles")] public ActionResult Detalles_SinAjax(int id) { var speaker = _repositorio.BuscarSpeaker(id); return View(speaker); }
  • 18. Ajax con JSON Autocompletar Necesitaremos jQueryUI $(document).ready(function () { var autocompleteUrl = '@Url.Action("Buscar")'; $("input#ciudad").autocomplete({ source: autocompleteUrl, minLength: 2, select: function (event, ui) { alert("Selected " + ui.item.label); } }); });