Ver por etiquetas

Todas las etiquetas » trucos (RSS)

ASP.NET MVC: Introducir lógica personalizada al detectar errores de validación en cliente

El sistema de validación en cliente de ASP.NET MVC , como sabemos basado en jQuery validate , es el encargado de mostrar u ocultar los mensajes de error asociados a cada campo conforme va comprobando su validez. Los mensajes de error asociados a cada validador son almacenados inicialmente en atributos data-val-* sobre el control a comprobar, y cuando se detecta un problema de validación, son mostrados copiando su contenido al interior de la etiqueta <span> que el helper Html.ValidationMessage...

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: Compilar Vistas Razor en una DLL

Hace poco, el gran David Ebbo publicaba un proyecto experimental llamado “Razor Generator”, un conjunto de herramientas destinadas a precompilar las vistas Razor que he visto bastante interesante y que creo que vale la pena comentar. Aunque ya aquí hemos hablado varias veces sobre la compilación de vistas , el enfoque de este nuevo proyecto es bastante diferente, pues permite generar clases en C# partiendo de las vistas, lo que permite, por ejemplo: distribuir vistas compiladas...
Publicado por José M. Aguilar | con no comments
Archivado en: ,,

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...
Más artículos < Página anterior - Página siguiente >