Ver por etiquetas

Todas las etiquetas » trucos (RSS)

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: EditorFor para propiedades anulables

Hace unos días me llegaba, vía formulario de contacto del blog, una consulta cuya respuesta pienso que puede resultar interesante para alguien más, así que ahí va. El problema con el que se encuentra el amigo F. H. es algo con lo que ya me topé hace tiempo al intentar utilizar el helper EditorFor() con propiedades anulables. Para los que todavía no lo habéis utilizado, comentar que el helper EditorFor() de ASP.NET MVC es una ayuda imprescindible...
Publicado por José M. Aguilar | 2 comment(s)
Archivado en: ,,

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

Generación de atributos con guiones en helpers MVC 3

Desde la primera versión de ASP.NET MVC se permite añadir a la mayoría de los helpers que generan etiquetas HTML atributos personalizados. Para ello, se introducían objetos anónimos cuyas propiedades eran transformadas a atributos en el momento del renderizado, como en el siguiente ejemplo: Este código generaría el siguiente marcado: Ahora que se van a poner muy de moda los atributos personalizados al estilo HTML5, como los “data-xxxx”...
Publicado por José M. Aguilar | con no comments

Validación de peticiones en ASP.NET, o cómo evitar el error “Request.Form peligroso”

La validación de peticiones es un mecanismo integrado en ASP.NET que evita la entrada al sistema de valores considerados “peligrosos” para su integridad, como tags y otros elementos utilizables para la inyección de scripts (XSS) o introducción de valores no controlados. Dado que está implementado a nivel de plataforma ASP.NET, los valores recibidos en parámetros de entrada son vigilados con ASP.NET MVC, WebForms e incluso WebPages (la tecnología...

No se encontró la información de metadatos y asignaciones para EntityType 'Namespace.Entidad' (InvalidOperationException)

Este es un error que me ha hecho perder un buen rato mientras trabajaba con objetos POCO en Entity Framework 4, y espero que pueda ayudar a alguien que se encuentre con el mismo problema. El tema comienza con el lanzamiento de una excepción InvalidOperationException justo en el momento de crear un ObjectSet<T> , como en el siguiente código: class MiContexto : ObjectContext { ... private ObjectSet<Cliente> clientes; public ObjectSet<Cliente> Clientes { get { return...
Publicado por José M. Aguilar | con no comments

Referenciar scripts, estilos y otros recursos desde vistas MVC

Una cuestión que consultan frecuentemente los alumnos del curso de MVC que tutorizo en CampusMVP , y que veo en los foros oficiales del framework trata sobre el uso correcto de rutas hacia recursos utilizados por las páginas, como scripts, estilos o imágenes. Unas referencias erróneas hacia las páginas de estilo o imágenes pueden hacer que un sitio web, o parte de éste, deje de visualizarse correctamente; en el tema de scripts es más grave pues...

Saltarse las validaciones del lado cliente en ASP.NET MVC

Las validaciones automáticas de ASP.NET MVC son una fórmula muy útil y productiva de comprobar los datos introducidos por nuestros usuarios. Como sabemos, basta decorar las propiedades de las entidades del Modelo con atributos que indiquen las restricciones a aplicar en cada caso, y el framework MVC se encargará del resto, incluso en la capa cliente . Como sabemos, el sistema de validación es capaz de generar scripts capaces de comprobar en cliente que los datos...

Edición elegante de fechas con jQuery Datepicker y MVC, paso a paso

Las plantillas de edición, incorporadas con la versión 2 de ASP.NET MVC, permiten crear muy fácilmente interfaces de edición reutilizables, y asociarlas a tipos de datos concretos. En el caso de las fechas se trata de una práctica muy habitual, puesto que la edición por defecto para este tipo de campos casi nunca es suficiente y siempre tendremos necesidad de modificar este comportamiento. Es decir, pongamos una entidad del Modelo como la siguiente: public...

¿Bug (sin importancia) en la plantilla de edición de MVC 2 con DateTime, decimal y double?

¿Habéis observado que al generar una vista de edición tipada sobre una entidad que contiene propiedades decimales o de fecha, Visual Studio os genera una llamada extraña al helper TextBoxFor() ? Vamos a verlo en detalle. Partimos de una entidad del Modelo como la siguiente: Generamos ahora el andamiaje con Visual Studio, utilizando la opción correspondiente del menú contextual, indicando que se trata de una vista de edición, sobre la entidad Persona...

Maxlength en cuadros de texto de formularios MVC

Resulta algo paradójico que ASP.NET MVC sea capaz de generar código para comprobar tanto en cliente como en servidor que la longitud del texto introducido sea menor que la indicada con la anotación [StringLength] , y sin embargo, los helpers habituales no generen el atributo maxlength en el tag <input type="text"> . Podemos comprobarlo muy fácilmente. Por ejemplo, dada una entidad del Modelo como la siguiente: public class Persona { [StringLength(20, ErrorMessage...

¿Esa enumeración está vacía?

Casualmente encuentro en el post de Chris Eargle “ Any() versus Count() ” un tema del que pensaba escribir hace tiempo y al final dejé en el tintero: ¿cómo podemos determinar si una enumeración está vacía? Vale, es bien fácil, una enumeración está vacía si tiene cero elementos . Si trabajamos con un array, podemos consultar la propiedad Length ; si se trata de una colección, podemos utilizar la propiedad Count...

Validación de rangos decimales en cliente y servidor para ASP.NET MVC 2

Una de las mejoras más esperadas de ASP.NET MVC 2 es, sin duda, el sistema integrado de validación del Modelo basado en las anotaciones de datos ( Data Annotations ). Y aunque la implementación en general es bastante apañada, hay algunos aspectos mejorables, sobre todo cuando intentamos desarrollar aplicaciones en nuestro idioma. Por ejemplo, existe un curioso comportamiento del juego de herramientas de validación en cliente y servidor en lo relativo a la introducción...
Publicado por José M. Aguilar | con no comments

Habilitar la compilación de vistas en proyectos ASP.NET MVC 2

Hace un año hablábamos por aquí sobre los ajustes que debíamos realizar para compilar las vistas de MVC 1.0 como parte del proceso de construcción del proyecto. De esta forma tendremos las ventajas del chequeo en tiempo de compilación, que bien valen la pena aún a costa de tener que esperar algo más en cada montaje. MVC 2 también permite habilitar esta característica en Visual Studio de forma muy sencilla. Sólo seguir los...
Publicado por José M. Aguilar | con no comments

Personalizar las plantillas por defecto de controladores y vistas MVC

Una interesante característica de ASP.NET MVC, o más concretamente del conjunto de herramientas incluidas en Visual Studio para darle soporte, es la posibilidad de personalizar las plantillas que el IDE utiliza a la hora de agregar controladores y vistas a un proyecto. Por ejemplo, cuando añadimos un controlador a nuestro proyecto, el entorno genera por defecto un código como el mostrado a continuación: using System; using System.Collections.Generic; using System...
Publicado por José M. Aguilar | 2 comment(s)
Archivado en: ,,

¿ActionLink te genera direcciones que acaban en Length=N?

Esta es una respuesta rápida a una cuestión de Fred C., que me llega vía formulario de contacto en Variable not found , sobre un problemilla que también sufrí en algunas ocasiones, y he pensado que posiblemente pueda interesarle a alguien más, así que ahí va. El escenario es el siguiente: tenemos en una vista un código para generar un enlace hacia una acción, como el mostrado a continuación: <%= Html.ActionLink( "Acceso...
Publicado por José M. Aguilar | 2 comment(s)
Archivado en: ,,

Modificar los mensajes de validación por defecto en ASP.NET MVC 2

El sistema de validaciones integrado en ASP.NET MVC 2, basado en la especificación de restricciones utilizando los atributos definidos en el espacio de nombres System.ComponentModel.DataAnnotations , permiten la introducción de mensajes de error personalizados, como en el siguiente ejemplo: [Range(100, 230, ErrorMessage= "La altura debe estar comprendida entre {1} y {2}" )] public double Height { get; set; } Y otra posibilidad es externalizar estos mensajes a archivos de recursos...
Publicado por José M. Aguilar | con no comments
Más artículos < Página anterior - Página siguiente >