Archivo de la etiqueta: ajax

MVC + JQuery Ajax. Cuando subo un archivo vía Ajax post y respondo un Json en IExx me muestra el Json para descargar.

Hay veces que como muchos de ustedes me hago la pregunta: ¿En que estaban pensando los desarrolladores de IE cuando…? Y es que muchas cosas que funcionan en la mayoría de exploradores, en IExx no funcionan, o funcionan de manera diferente.

Un ejemplo de esto es el siguiente escenario:

Has desarrollado una aplicación MVC en la cual tienes una función ActionResult que recibe un archivo mediante $.post, esta a su vez responde al cliente con un JSon, siendo esta ultima parte algo así:

[HttpPost]

public ActionResult SubirArchivo(string nombreArchivo, FormCollection formulario){

// Antes que esto hay mucho código…

MiClase mivariable = new MiClase();return

Json(mivariable);

}

Esto sucede porque el IE, en su ceder “Acept” tiene un MIME que no se corresponde con el “application/json” que es el tipo de medio exacto para enviar JSon al explorador (y que de hecho la función Json nos retorna). Para resolver esto basta con modificar nuestro código el cual quedaría así:

[HttpPost]

public ActionResult SubirArchivo(string nombreArchivo, FormCollection formulario)

{

// Antes que esto hay mucho código…

MiClase mivariable = new MiClase();

return Json(mivariable, “text/html”);

}

Como siempre esperando que este ejemplo pueda solucionar sus problemas y les sea de ayuda.

Validar elementos de un formulario que esta en un dialog box de JQuery en Microsoft MVC

Hace unos días estaba atascado porque no podía lograr validar unos elementos en un formulario que se encontraba desplegado con un dialog box de JQuery. Buscando en la sabia internet encontré la manera sencilla de lograrlo, en síntesis el problema esta en que cuando se carga una vista parcial con Ajax o cualquier otra solicitud XHR el validador no puede hacer nada ya que ha sido cargado por lo tanto estos elementos nuevos necesitan ser validados ya que no estaban cuando se cargo la pagina. Para lograr esto comparto con ustedes un pequeño fragmento de código (el cual debe ser cargado en el partial view):

$(function(){

$.validator.unobtrusive.parse(“Elemento”);

});

Espero que les sirva de algo, cualquier cosa me pueden preguntar en los comentarios.

JQuery Uniform dentro de un control UpdatePanel de ASP.NET

Uniform, es un pequeño complemento o librería de JavaScript que lo que hace sencillamente es poner los elementos HTML (inputs) más bonitos y agradables a la vista pero sin que pierdan su funcionalidad.

Pues sucede que el otro día necesite utilizar esta librería que ejercía un cambio sobre controles que se encontraban dentro de un UpdatePanel, oh si, el UpdatePanel es un tormento cuando hay que lidiar con tareas del lado del cliente efectuadas con JavaScript; en este caso lo sucedido es que al hacer un postback asincrónico se perdía la belleza de los controles, ah caramba, luego de mucho intentar hacer que la rueda se moviera casi me estaba rompiendo la cabeza cuando encontré la forma de resolverlo; sencillamente era atar el evento “EndRequest” propio del UpdatePanel (Del lado cliente)  al método de JavaScript de uniform para que volviera aplicarle la belleza a los controles. Aquí pongo el código en cuestión:

$(document).ready(function () { 

// Se ejecuta el método de manera inicial

$(“#upcontainer :input”).uniform(); 

// Se ata el evento endRequest con el metodo de uniform

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function () { $(“#upcontainer :input”).uniform()}); 

});

Espero que esto les resuelva la vida de la misma manera que a mi me ayudó.