SlideShare una empresa de Scribd logo
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

PDF
ASP.NET MVC - validacion de datos
PDF
ASP.NET MVC - introduccion al web api
PDF
ASP.NET MVC - Introducción a ASP.NET MVC
PDF
ASP.NET MVC - layouts y vistas parciales
PDF
ASP.NET MVC - areas, manejo de estado
PDF
WPF 10. mejorando la funcionalidad y usabilidad de las aplicaciones
DOCX
PDF
Introducción a AngularJS
ASP.NET MVC - validacion de datos
ASP.NET MVC - introduccion al web api
ASP.NET MVC - Introducción a ASP.NET MVC
ASP.NET MVC - layouts y vistas parciales
ASP.NET MVC - areas, manejo de estado
WPF 10. mejorando la funcionalidad y usabilidad de las aplicaciones
Introducción a AngularJS

La actualidad más candente (20)

PDF
Java servlets
PDF
Aplicación abc. asp net mvc 3
PDF
Liferay versión 6.1 Trabajando con LDAP, introducción
PDF
Webinar: Base de Datos en tiempo real con MeteorJS
PDF
Liferay 6.1 Service Builder
PDF
Trabajando con imagenes en liferay 6.1
PDF
Workshop 7: Single Page Applications
DOCX
la mejor forma de Conectar c# con mysql con archivos de configuracion
PPTX
Jdbc (Java Database Connectivity)
PPTX
PPTX
PDF
Java Web Lección 02 - JSP
PPTX
Arquitectura en aplicaciones Angular y buenas practicas.
PDF
Javascript y AJAX en Wordpress
PPTX
Presentación web en 4 capas
PPTX
SQL en Visual Studio
PPTX
ASP.NET MVC
PPTX
Curso AngularJS - 4. filtros y servicios
PPTX
Curso AngularJS - 7. temas avanzados
Java servlets
Aplicación abc. asp net mvc 3
Liferay versión 6.1 Trabajando con LDAP, introducción
Webinar: Base de Datos en tiempo real con MeteorJS
Liferay 6.1 Service Builder
Trabajando con imagenes en liferay 6.1
Workshop 7: Single Page Applications
la mejor forma de Conectar c# con mysql con archivos de configuracion
Jdbc (Java Database Connectivity)
Java Web Lección 02 - JSP
Arquitectura en aplicaciones Angular y buenas practicas.
Javascript y AJAX en Wordpress
Presentación web en 4 capas
SQL en Visual Studio
ASP.NET MVC
Curso AngularJS - 4. filtros y servicios
Curso AngularJS - 7. temas avanzados
Publicidad

Similar a ASP.NET MVC - AJAX (20)

PPTX
9 Programación Web con .NET y C#
PPTX
Paginas web diseño donamico.pptx
PPT
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
PPTX
Taller de Jquery
PDF
Manual De Ajax En Espanol
PPTX
jQuery y ASP
PPTX
Capitulo 4.7 prog iii
PPT
PPTX
S4-DAW-2022S1.pptx
PDF
PPT Operar controles de formularios 2.pdf
PDF
AJAX a cuerda Lo básico sobre AJAX y su funcionamiento
PPT
Desarrollando Una Mejor Experiencia De Usuario Con Ajax
ODP
Ajax
PPT
AJAX EN CURSO PHP
PPT
Ajax
PPT
Inicios Ajax
PPT
AJAX
9 Programación Web con .NET y C#
Paginas web diseño donamico.pptx
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
Taller de Jquery
Manual De Ajax En Espanol
jQuery y ASP
Capitulo 4.7 prog iii
S4-DAW-2022S1.pptx
PPT Operar controles de formularios 2.pdf
AJAX a cuerda Lo básico sobre AJAX y su funcionamiento
Desarrollando Una Mejor Experiencia De Usuario Con Ajax
Ajax
AJAX EN CURSO PHP
Ajax
Inicios Ajax
AJAX
Publicidad

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

PDF
Microsoft HoloLens
PDF
WPF 09. procesos asíncronos y programación paralela
PDF
WPF 08 - manejo y vinculación de datos
PDF
WPF 07 - gráficos, animación y multimedia
PDF
WPF 06 - personalizando los controles de interfaz de usuario
PDF
WPF 05 - triggers y eventos
PDF
WPF 04 - reutilizando recursos y estilos en una aplicación WPF
PDF
WPF 03 - controles WPF
PDF
WPF 02 - construyendo una interfaz de usuario
PDF
WPF 01 - introducción
PDF
ASP.NET MVC - bundling y minification
PDF
ASP.NET MVC - implementando globalizacion and localizacion
PDF
Crecimiento profesional como desarrollador de software
PDF
10. consumiendo datos
PDF
09. Creando interfaces de usuario animadas y adaptables
PDF
08. Propiedades de estilo HTML box
PDF
07. Usando CSS3
PDF
06. Creando un proceso web worker
PDF
05. Creando e implementando objetos y métodos
PDF
04. Implementando APIs HTML5
Microsoft HoloLens
WPF 09. procesos asíncronos y programación paralela
WPF 08 - manejo y vinculación de datos
WPF 07 - gráficos, animación y multimedia
WPF 06 - personalizando los controles de interfaz de usuario
WPF 05 - triggers y eventos
WPF 04 - reutilizando recursos y estilos en una aplicación WPF
WPF 03 - controles WPF
WPF 02 - construyendo una interfaz de usuario
WPF 01 - introducción
ASP.NET MVC - bundling y minification
ASP.NET MVC - implementando globalizacion and localizacion
Crecimiento profesional como desarrollador de software
10. consumiendo datos
09. Creando interfaces de usuario animadas y adaptables
08. Propiedades de estilo HTML box
07. Usando CSS3
06. Creando un proceso web worker
05. Creando e implementando objetos y métodos
04. Implementando APIs HTML5

Último (11)

PPTX
Derechos_de_Autor_y_Creative_Commons.pptx
PPTX
sistemas de informacion.................
PPTX
Tratará sobre Grafos_y_Arboles_Presentacion.pptx
PDF
AutoCAD Herramientas para el futuro, Juan Fandiño
PPTX
Fundamentos de Python - Curso de Python dia 1
PDF
Su punto de partida en la IA: Microsoft 365 Copilot Chat
PPTX
Implementación equipo monitor12.08.25.pptx
DOCX
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
PDF
Clase 3 - Presentación visual (Insertando objetos visuales) POWER POINT.pdf
PPTX
ORIGEN DE LA IA - GRADO 1102 INTELIGENCIA
PPTX
Conceptos basicos de Base de Datos y sus propiedades
Derechos_de_Autor_y_Creative_Commons.pptx
sistemas de informacion.................
Tratará sobre Grafos_y_Arboles_Presentacion.pptx
AutoCAD Herramientas para el futuro, Juan Fandiño
Fundamentos de Python - Curso de Python dia 1
Su punto de partida en la IA: Microsoft 365 Copilot Chat
Implementación equipo monitor12.08.25.pptx
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
Clase 3 - Presentación visual (Insertando objetos visuales) POWER POINT.pdf
ORIGEN DE LA IA - GRADO 1102 INTELIGENCIA
Conceptos basicos de Base de Datos y sus propiedades

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); } }); });