Ver por etiquetas

Todas las etiquetas » desarrollo » trucos (RSS)

Crear manualmente proxies de Hubs Signalr

Cuando desde un cliente javascript consumimos los servicios suministrados por un Hub de SignalR, lo habitual es usemos los proxies generados automáticamente, para lo que solemos incluir en nuestra página una referencia al script “/Signalr/Hubs” según la ruta por defecto. Sin embargo, puede haber casos en los que no nos interesa este comportamiento y preferimos generarlo de forma manual para, por ejemplo, incluirlo en un bundle o distribuir el archivo a través...
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

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: ,,

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

Login único para subdominios en ASP.NET

Imaginad que tenemos un sistema web de cierto volumen y decidimos estructurarlo en aplicaciones independientes, cada una publicada en un subdominio propio: www.acme.org , que sería el sitio principal. crm.acme.org , con el sistema CRM de la empresa. erp.acme.org , con un sistema de gestión empresarial. administration.acme.org con las herramientas de administración del sistema. etc. Desde un punto de vista operativo, es probable que nos interese suministrar un mecanismo de autenticación...
Publicado por José M. Aguilar | con no comments
Archivado en: ,,

Establecer el foco automáticamente, versión declarativa

Hace poco escribía un post en el que mostraba cómo se podía conseguir establecer el foco inicialmente en un control de edición , algo que era posible con Webforms pero no directamente con las herramientas que ASP.NET MVC trae de fábrica. La solución propuesta consistía en introducir en la vista código de script para desplazar el foco hasta el control indicado mediante una llamada al helper Html.SetFocusTo() , que implementábamos en el...
Publicado por José M. Aguilar | con no comments

ASP.NET MVC: establecer el foco en un control al cargar la página

Uno de los aspectos más criticados por los desarrolladores cuando comienzan a trabajar con ASP.NET MVC es el hecho de tener que volver a resolver problemas que estaban ya más que solucionados en Webforms. Y uno de estos casos es un detallito muy simple pero útil: establecer el foco de edición en un control concreto al cargar una página. En Webforms era suficiente con asignar al atributo defaultFocus del tag <form> el nombre del control que nos interesara,...
Publicado por José M. Aguilar | con no comments

Limpiar un input type=file

No es algo excesivamente frecuente, pero en ocasiones podemos necesitar limpiar el valor de un campo de tipo file (el que usamos para hacer los uploads ) de un formulario, por ejemplo, para evitar que el usuario envíe un archivo que por cualquier motivo no deba ser subido al servidor. O dicho de otra forma, imaginemos la siguiente porción de un formulario en pantalla, que podría ser generada con el código que podéis ver justo a continuación: < label for...
Publicado por José M. Aguilar | con no comments

Validator providers en ASP.NET MVC

En la pasada charla sobre el sistema de validaciones de MVC 3 vimos un ejemplo, creo que bastante ilustrativo, de los proveedores de validación del framework. Concretamente, implementamos un proveedor capaz de obtener las anotaciones partiendo de las restricciones definidas en el web.config . Es decir, las reglas de comprobación como Required o StringLength no las definíamos a nivel de código mediante atributos, sino en el archivo de configuración, lo que podía...
Publicado por José M. Aguilar | con no comments

ASP.NET MVC: Binding de enums y EnumDataType

El pasado mes de julio publicaba el post “ Binding de enums en ASP.NET MVC ”, donde analizaba los problemas que podían aparecer cuando estamos intentando bindear tipos enumerados y los datos de entrada contienen valores incorrectos, y planteaba una solución basada en un model binder personalizado . A raíz de dicho post, el amigo Héctor S. (¡gracias!) me envió una interesante pregunta: ¿por qué no utilizar la anotación System...

ASP.NET MVC: retorno de archivos .Zip creados al vuelo

ASP.NET MVC viene acompañado de serie por un buen número de subtipos de ActionResult que podemos utilizar como retorno de nuestras acciones ( FileResult , ContentResult , ViewResult , RedirectResult , etc…) y que cubren la mayoría de escenarios de uso frecuente al desarrollar aplicaciones para este framework. Pero sin duda, lo mejor de todo es lo fácilmente que podemos extender este conjunto para lograr resultados muy potentes, reutilizables y respetuosos con el...
Publicado por José M. Aguilar | con no comments

ASP.NET MVC: obtener id y nombre de un control de formulario

Es bastante frecuente necesitar obtener el identificador o nombre de un control de entrada que ha sido generado por un helper de ASP.NET MVC. Por ejemplo, si queremos acceder desde scripts al contenido de un cuadro de texto creado de esta forma, obligatoriamente debemos conocer con exactitud qué identificador le asignó el sistema. Observad el siguiente código de vista, bastante trivial: @ Html.EditorFor(model=>model.Nombre) Intuitivamente podemos estar seguros de que el control...
Publicado por José M. Aguilar | 2 comment(s)

ASP.NET MVC 3 y la coma en los decimales

Si a día de hoy hay algo fatalmente poco resuelto en ASP.NET MVC, es sin duda la localización . Aunque con un poco de paciencia se pueden poner en marcha sistemas completamente adaptados a distintos idiomas y culturas, la verdad es que se echa en falta una mayor consideración, entre otros, con los que osamos utilizar la coma para separar la parte entera de la decimal en un número. Hace tiempo traté el tema por aquí, y aporté una solución para...

ASP.NET MVC: Nombres de acciones y controladores más amigables

La ruta por defecto de ASP.NET MVC es válida para la gran mayoría de escenarios simples, permitiéndonos acceder a las acciones a través de URLs del tipo http://{servidor:puerto}/{controlador}/{accion} Así, dada una clase controlador con acciones como las siguientes: public class InformacionCorporativaController : Controller { public ActionResult QuienesSomos() { return View(); } public ActionResult MisionVisionYValores() { return View(); } public ActionResult UneteANuestroEquipo...
Publicado por José M. Aguilar | con no comments

Retornar vistas dependiendo de la cultura actual en ASP.NET MVC

ASP.NET MVC utiliza los mismos mecanismos de ASP.NET para la implementación de sitios web localizados, por lo que podemos utilizar los clásicos recursos definidos en la carpeta App_GlobalResources para ir componiendo los interfaces. De esta forma, los literales de texto de las vistas son sustituidos por expresiones que, ya en tiempo de ejecución, son tomadas del archivo de recursos correspondiente al idioma actual: Sin embargo, recientemente me he encontrado con un escenario...
Publicado por José M. Aguilar | con no comments

Compilación de vistas ASP.NET MVC y el error “No se pudo cargar el tipo EntityDesignerBuildProvider”

Hacía tiempo que no activaba la compilación de vistas en ASP.NET MVC. La verdad es que si no tienes una máquina potente ralentiza bastante la construcción de las soluciones, pero ahora que la tecnología está de nuevo de mi lado, pensé que sería buena idea activarla en un proyecto MVC 3 y resulta que me he topado con el siguiente error de compilación: No se pudo cargar el tipo 'System.Data.Entity.Design.AspNet.EntityDesignerBuildProvider'...
Publicado por José M. Aguilar | con no comments
Más artículos Página siguiente >