Generar archivos Excel como un señor con ClosedXml

Venga, lo confieso: yo también he generado desde mis aplicaciones contenidos HTML y los he enviado al cliente en un archivo con extensión XLS, incluso modificando el content-type, para que pareciera un documento de hoja de cálculo. Durante años. Y también le he dicho a mis clientes que el molesto mensaje que aparece al abrirlo desde Excel, el que indica que el contenido del archivo no coincide con la extensión del mismo, es algo normal. Pero esto se acabó...

¿Problemas al actualizar a jQuery 1.9?

Seguro que, como un servidor, muchos os habéis vuelto locos con la llegada de jQuery 1.9 al intentar actualizar vuestros proyectos, principalmente por los breaking changes introducidos que han provocado que tanto código propio como muchos plugins dejen de funcionar debido a la desaparición de métodos como live() , $.browser() y otros cambios de envergadura. Nuestro código podemos modificarlo teniendo en cuenta los cambios de esta versión , hasta ahí...
Publicado por José M. Aguilar | con no comments
Archivado en: ,

Desacoplando controladores ASP.NET MVC, paso a paso

Hace poco, en el post donde trataba la inyección de dependencias y desacoplamiento de Hubs de SignalR , el amigo Maxxx comentaba que podría estar bien ver cómo podríamos emplear las mismas técnicas con ASP.NET MVC. Y ciertamente, me ha parecido muy interesante porque es un escenario que encuentro habitualmente en empresas de desarrollo: comprenden los beneficios de reducir el acoplamiento entre componentes, pero les parece algo demasiado complejo como para aplicar...

Mi libro: Introducción a ASP.NET SignalR

Seguro que estaréis al tanto de que durante los últimos tiempos he estado trabajando junto con los amigos de Krasis/CampusMVP en la publicación de un libro sobre SignalR . De hecho, probablemente también sabréis que la versión en inglés del mismo se presentó y comenzó a distribuir para Estados Unidos (bueno, y para todo el mundo) hace unas semanas, cuando aún SignalR se encontraba en Release Candidate, y ha conseguido atraer a...
Publicado por José M. Aguilar | 10 comment(s)
Archivado en: ,,

Eliminar el botón de los campos password de IE10

Hace sólo unos días veíamos cómo eliminar y personalizar los botones que Internet Explorer 10 añade a nuestros cuadros de edición estándar , pero nos dejábamos por detrás un caso especial: los controles de edición de contraseñas, o sea, los <input type="password"> de toda la vida. En esta ocasión, IE10 muestra por cortesía un pequeño icono con forma de ojo, que permite visualizar el contenido...
Publicado por José M. Aguilar | con no comments

Eliminar el botón de limpiado de controles de IE10

Va un truquillo rápido. Los que ya habéis saltado a Internet Explorer 10 seguro habréis notado el pequeño botón que este navegador añade a los cuadros de edición estándar cuando obtienen el foco, y que permite limpiar rápidamente su contenido: Pues bien, hay veces que a nivel de diseño no nos interesa que se muestre la pequeña “X” en los controles, su posición entra en conflicto con otro elemento visual...
Publicado por José M. Aguilar | con no comments
Archivado en: ,,,,

¿Añadir una barra al final de las URL?

Hace poco veíamos que el nuevo sistema de routing usado por proyectos MVC 4 permitía una cierta configuración del formato de URL generadas por la aplicación al usar helpers como Url.Action() o Html.ActionLink() , y cómo usando una simple línea de código podíamos hacer que las rutas se generaran usando sólo minúsculas . Pues bien, al igual que en ese caso, en los proyectos que usen la última versión del ensamblado...
Publicado por José M. Aguilar | con no comments

Inyección de dependencias en Hubs de SignalR

Cuando estamos implementando Hubs de SignalR, podemos encontrarnos fácilmente con que éstos necesitan utilizar componentes externos para llevar a cabo su tarea. Por ejemplo, es bastante probable que un servicio en tiempo real proporcionado por un Hub tenga que utilizar una clase de servicios o cualquier otro componente externo de una aplicación, como en el siguiente código: ? 1 2 3 4 5 6 7 8 9 10 11 public class MyHub: Hub { public Task sendMessage( string text) { using...
Publicado por José M. Aguilar | con no comments

Simular una conexión lenta con Fiddler

Normalmente hacemos pruebas de nuestros desarrollos web sobre nuestro propio equipo, donde la transferencia de datos es prácticamente inmediata, en servidores de prueba ubicados en una red de área local, o incluso sobre un servidor de producción al que accedemos mediante una conexión a Internet de gran capacidad. Sin embargo, nuestras aplicaciones web son muy diferentes cuando el cliente no dispone de una conexión de alta velocidad. Lo que nosotros percibimos en...

Documentación automática de servicios WebAPI

Cuando trabajábamos con los Servicios Web de toda la vida, las herramientas de desarrollo incluían sistemas para generar la documentación básica de los servicios que implementábamos. El estándar WSDL ( Web Services Description Language ), era un lenguaje basado en XML que permitía describir las funcionalidades de un servicio web aportando gran cantidad de detalles sobre las operaciones, tipos de datos, o direcciones de acceso a las mismas. Gracias...
Publicado por José M. Aguilar | con no comments
Archivado en: ,,

Actualizar todos los paquetes Nuget de un proyecto

Aunque a muchos pueda parecer simple, hay gran cantidad de desarrolladores que para actualizar los paquetes Nuget de un proyecto acuden a la herramienta de gestión incluida en el IDE y van actualizando uno por uno los componentes instalados. Pues bien, resulta que desde hace algún tiempo, Nuget soporta la actualización automática de todos los paquetes de una solución . Para ello, basta con acudir a la consola de administración de paquetes ( Tools > Library...
Publicado por José M. Aguilar | con no comments
Archivado en: ,

Vende a la nube capacidad de proceso de tu móvil

Indudablemente, hoy en día llevamos en el bolsillo ordenadores en miniatura mucho más potentes de lo que eran los equipos de escritorio hace unos años. Cualquier smartphone razonablemente actualizado es capaz de funcionar a más de 1Ghz y cuenta con varios gigabytes de memoria RAM, y, sin embargo, toda esta potencia está infrautilizada la mayor parte del tiempo. Por otro lado, tampoco se puede dudar ya de la entrada de la nube en nuestras vidas . Cada vez desplazamos...
Publicado por José M. Aguilar | con no comments

Validación en cliente de campos ocultos en ASP.NET MVC

En formularios ASP.NET MVC, por defecto los campos ocultos no son validados en cliente . Es decir, aunque estos campos hayan sido generados usando los helpers e incluyan atributos con las restricciones, no serán tenidos en cuenta por jQuery validate a la hora de validar los datos del formulario antes de enviarlos al servidor. Así, si tenemos una clase del Modelo con una propiedad como la siguiente: ? 1 2 3 [Required(ErrorMessage= "Required" )] [StringLength(3, ErrorMessage...

Errores de ASP.NET MVC 4 en distintos idiomas

Algunos mensajes que genera ASP.NET MVC utilizan el idioma en el que hayamos instalado el framework. Por ejemplo, si hemos descargado la versión en inglés de MVC 4 y estamos usando en sistema operativo en español, podemos encontrarnos con textos de error como los mostrados en la siguiente captura de pantalla: Los textos en español son generados por las restricciones impuestas por los tipos de datos y las anotaciones (data annotations) que tengamos definidas para ellos...
Publicado por José M. Aguilar | con no comments

Enums con desplegables automáticos en MVC

Si hay algo que me gusta de ASP.NET MVC es la cantidad de fórmulas que ofrece para aumentar nuestra productividad. Prácticamente cualquier código que estemos hartos de repetir una y otra vez puede ser encapsulado y reutilizado usando los puntos de extensión que nos proporciona el framework. Hoy vamos a ver una solución a un problema al que seguro nos hemos enfrentado cientos de veces: la edición en formularios de propiedades de tipo enum . 1. El escenario...
Publicado por José M. Aguilar | con no comments

Rutas en minúsculas en MVC 4 y ASP.NET 4.5

Seguro que alguna vez habéis notado que al generar URLs hacia acciones de una aplicación MVC usando helpers como Url.Action() o Html.ActionLink() , éstas son generadas usando mayúsculas y minúsculas según hubiéramos indicado en los parámetros de las llamadas: Helper URL generada @Url.Action("index", "home") /home/index @Url.Action("List","Products", new{ Category="PC" }) /Products/List?Category...
Publicado por José M. Aguilar | con no comments

Asincronía en MVC 4

Este es el mensaje que deberíamos interiorizar, si no lo hemos hecho ya, a la vista de las múltiples novedades introducidas en las últimas versiones de la plataforma ASP.NET y MVC: Asíncronía = bueno A grandes rasgos, la explicación es la siguiente: IIS tiene disponible un número limitado de hilos ( threads ) destinados a procesar las peticiones. Cuando llega una petición, uno de estos hilos es asignado en exclusiva a ella y permanecerá...
Publicado por José M. Aguilar | 2 comment(s)
Archivado en: ,,

TypeScript: un primer vistazo

Siempre he tenido la sensación de que Javascript no ha evolucionado de forma proporcional a las responsabilidades y expectativas que han ido depositando en él. El explosivo crecimiento que ha sufrido en los últimos años no venía acompañado de mejoras en el lenguaje que nos ayudaran a implementar aplicaciones cada vez más extensas y complejas, para las que es muy conveniente disponer de herramientas más potentes que las ofrecidas de serie por...

ASP.NET MVC 4: DisplayModes organizados por carpetas

Hace poco hablábamos de la creación de Display Modes personalizados en ASP.NET MVC 4, y veíamos cómo hacerlo usando la clase DefaultDisplayMode proporcionada por el framework, con la que podíamos cubrir la mayoría de necesidades comunes. Así, veíamos cómo el siguiente código era suficiente para registrar un nuevo Display Mode llamado “iPhone”, que sería activado cuando en el identificador del agente de usuario...
Publicado por José M. Aguilar | con no comments

ASP.NET MVC 4 y los nuevos atributos de validación de .NET 4.5

Un post rapidito. Según puede consultarse en MSDN , ya tenemos confirmado que la versión 4.5 de .NET framework vendrá acompañada de un nuevo conjunto de atributos de validación para aplicar a las propiedades del Modelo en el espacio de nombres System.ComponentModel.DataAnnotations : CreditCardAttribute , que puede ser utilizado para validar números de tarjeta de crédito. EmailAddressAttribute , que validará direcciones de correo electrónico...
Publicado por José M. Aguilar | con no comments
Más artículos Página siguiente >