martes, 10 de mayo de 2011
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 para crear de forma muy rápida potentes interfaces de introducción de datos. Por ejemplo, hace tiempo vimos cómo podíamos utilizarlo para crear un editor de propiedades de tipo fecha usando jQuery datepicker, y que quedaba la mar de bien ;-)Edad
, de tipo int
, podemos desde la vista generar un editor apropiado para ella utilizando la expresión: @Html.EditorFor(model => model.Edad)
En tiempo de ejecución, el framework buscará en la carpeta /Views/Shared/EditorTemplates si existe una vista parcial con el nombre del tipo (
int32
en este caso, que es el nombre real del tipo en la plataforma .NET), y la mostrará para que el usuario pueda editar el valor de esta propiedad.El siguiente código podría ser una plantilla de edición válida para el ejemplo anterior, el contenido que podríamos encontrar dentro del archivo
int32.cshtml
:@model int
@Html.TextBox("",
Model,
new { maxlength=8, style="width: 100px; text-align: right;" }
)
Como se puede observar, simplemente estamos creando un cuadro de texto, con un estilo determinado y una capacidad máxima de 8 caracteres.
Pues bien, y volviendo al tema del post, el problema que comentaba este amigo de Variable not found es que cuando, en lugar de tratarse de un tipo valor puro (como
int32
, DateTime
, double
, etc.) se trata de un tipo anulable (int?
, DateTime?
, double?
…) todo va bien mientras el contenido que queremos editar no sea un nulo, momento en que aparecerá el siguiente error: El modelo pasado al diccionario es NULL, pero este diccionario requiere un elemento de modelo distinto de NULL de tipo ‘System.Int32’.
Básicamente, lo que nos indica el error es que en la plantilla de edición estamos esperando un
int
, como hemos indicado con la directiva @model
de Razor, y estamos recibiendo un valor nulo, lo cual es absolutamente incompatible.Aunque a priori parece que el problema se podría solucionar creando en la carpeta EditorTemplates otra plantilla exclusiva para el tipo anulable
int32?
, rápidamente nos damos cuenta de que esto no sería una tarea sencilla. El nombre interno de los tipos anulables, como de cualquier otro tipo genérico, está bastante lejos de ser manejable e intuitivo… no, la solución es mucho más simple.ASP.NET MVC utiliza la misma plantilla de edición para los tipos anulables y sus tipos valor correspondiente. Así, la vista
int32.cshtml
será utilizada tanto para editar las propiedades de tipo int
como las int?
. Esto hace que la solución al problema sea, simplemente, modificar ésta para que acepte el tipo correcto de datos, y gestionar los nulos de la forma que más nos interese, por ejemplo mostrando un cero como valor por defecto en el cuadro de edición, como en el siguiente código:@model int?
@Html.TextBox("",
Model ?? 0,
new { maxlength=8, style="width: 100px; text-align: right;" }
)
¡Y eso es todo! Espero que la duda quede resuelta, y que pueda ser de utilidad a alguien más :-)
Publicado en: Variable not found.
lunes, 9 de mayo de 2011
Estos son los enlaces publicados en Variable not found en Facebook y Twitter desde el martes, 03 de mayo de 2011 hasta el domingo, 08 de mayo de 2011.
Espero que te resulten interesantes. :-)
Publicado en: Variable not found
Espero que te resulten interesantes. :-)
- Hadi Hariri: My Real World Architectures with MVC from Devdays in The Netherlands is online
Fecha: 08/05/2011 - José Miguel Torres: Conociendo los métodos de extensión. Fundamentos de LINQ I.
Fecha: 06/05/2011 - Eduard Tomàs: Mi tutorial d ASP.NET MVC se ha "ganado" una sección propia en desarrolloweb.com
Fecha: 06/05/2011 - Automatically Including Current Language In Generated URLs With ASP.NET MVC
Fecha: 06/05/2011 - Scott Guthrie: I just blogged about the new EF Code First and Data Scaffolding support in ASP.NET MVC 3 Tools Update
Fecha: 06/05/2011 - Rajagopal: Securing your ASP.NET MVC 3 Application ASP.NET MVC
Fecha: 06/05/2011 - Mark Chouanard: Securing your ASP.NET MVC 3 Application - Ricka on MVC
Fecha: 05/05/2011 - Gonzalo Pérez: [Alerta] jQuery 1.6 Atención con los efectos del cambio en attr
Fecha: 04/05/2011 - Scott Guthrie: I just did a post post about the ASP.NET MVC 3 Tools Update we shipped last month
Fecha: 04/05/2011 - Maarten Balliauw: Developers, developers, developers! (The Rap)
Fecha: 04/05/2011 - Miquel Camps Orteza: Sunlight: Intelligent Syntax Highlighting
Fecha: 03/05/2011 - Pablo Iglesias (@Zpektrum): Hermanos developers: Dios se nos ha revelado! ;-)
Anders Hejlsberg: Questions and Answers
Fecha: 03/05/2010 - John Resig: jQuery 1.6 Released!
Fecha: 03/05/2011
Publicado en: Variable not found
miércoles, 4 de mayo de 2011
Os dejo un truco rápido, por si en alguna ocasión necesitáis desactivar la depuración de scripts de Visual Studio 2010, que está habilitada por defecto cuando arrancamos una aplicación desde el IDE, por ejemplo pulsando F5.
Seguro que alguna vez habéis intentado acceder a las herramientas de desarrollo de Internet Explorer para depurar un script en una página que estáis ya depurando desde VS, y os ha aparecido un cuadro de diálogo con el error “No se puede conectar al proceso. Debe haber otro depurador conectado al proceso”.
Esto se debe a que Visual Studio, al arrancar un proyecto web en modo debug, se “engancha” a Internet Explorer con objeto de ofrecernos una depuración integrada en el propio IDE entorno, y es la clave de que podamos introducir en scripts puntos de ruptura, observar variables, etc. Personalmente no utilizo casi nunca esta opción integrada, y siempre he preferido usar herramientas externas como Firebug, por lo que la mayoría de las veces para mí no es más que un estorbo.
También en muchos casos habréis observado que al ejecutar una web en modo depuración, en el explorador de soluciones se añade una nueva sección llamada “Documentos de script”, donde aparece el navegador Internet Explorer, y una lista con todos los scripts estáticos y dinámicos que están siendo utilizados en la página actual.
El problema es que en cada cambio de página esta lista de scripts se limpia y se vuelve a recrear, lo que en sitios con un uso intensivo de scripting y que utilicen muchas bibliotecas externas pueden ralentizar considerablemente la ejecución del sistema.
Pues bien, buscando una forma de desactivar este comportamiento que no implicara lanzar el navegador de forma manual, tocar el registro del sistema, ni hacer cosas raras (sobre todo por si más adelante quería dar marcha atrás), he dado con un post antiguo de Vishal Joshi en el que describe cómo conseguirlo de forma muy sencilla, en sólo dos pasos:
![Activación del depurador de Silverlight Activación del depurador de Silverlight](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiStQZZciNhBRT9-_A2TCmEthkCVKmWH6Zec7b7psSJTzzoreF0y1nJ7RIKA2bxy8E_rARCwljhaOn2JvG5ByJkHqgT2KBABaBT_5E_WM8p8m4eyVzFA9hHYiMXRZl1kJWUhiK5gw/?imgmax=800)
Al parecer, el depurador de script y el de Silverlight son excluyentes, por lo que el activar este último implica la desactivación del primero.
Espero que os sea de ayuda.
Publicado en: Variable not found.
Esto se debe a que Visual Studio, al arrancar un proyecto web en modo debug, se “engancha” a Internet Explorer con objeto de ofrecernos una depuración integrada en el propio IDE entorno, y es la clave de que podamos introducir en scripts puntos de ruptura, observar variables, etc. Personalmente no utilizo casi nunca esta opción integrada, y siempre he preferido usar herramientas externas como Firebug, por lo que la mayoría de las veces para mí no es más que un estorbo.
El problema es que en cada cambio de página esta lista de scripts se limpia y se vuelve a recrear, lo que en sitios con un uso intensivo de scripting y que utilicen muchas bibliotecas externas pueden ralentizar considerablemente la ejecución del sistema.
Pues bien, buscando una forma de desactivar este comportamiento que no implicara lanzar el navegador de forma manual, tocar el registro del sistema, ni hacer cosas raras (sobre todo por si más adelante quería dar marcha atrás), he dado con un post antiguo de Vishal Joshi en el que describe cómo conseguirlo de forma muy sencilla, en sólo dos pasos:
- vamos a propiedades del proyecto,
- accedemos a la pestaña "web",
- y activamos el depurador de Silverlight (!)
Al parecer, el depurador de script y el de Silverlight son excluyentes, por lo que el activar este último implica la desactivación del primero.
Espero que os sea de ayuda.
Publicado en: Variable not found.
martes, 3 de mayo de 2011
Y la puesta de largo podríamos decir que ha sido por todo lo alto... casi de forma simultánea, se estrenaban diversos canales a través de los cuales se puede participar ya de forma activa en este grupo:
Web oficial de AUGES http://www.auges.org/ Blog (creado con BlogEngine.Net, por supuesto ;-D) donde se irán publicando la principales noticias y novedades del grupo, enlaces a sitios de interés, recursos, etc. | |
AUGES en Facebook http://www.facebook.com/#!/pages/AUGES/127448900664665 No podía faltar la presencia de AUGES en, Facebook, la red social por excelencia. Un lugar estupendo para sugerir, criticar, comentar todo lo que creamos oportuno sobre el grupo, sus actividades y temática. | |
AUGES en LinkedIn http://www.linkedin.com/groups/AUGES-3889150?mostPopular=&gid=3889150 Nuestro grupo también tiene cabida en la red social profesional más importante del momento. Y de hecho, ya está siendo el marco de interesantes debates sobre ASP.NET :-) | |
AUGES en Twitter @augestweets También puedes comunicarte con AUGES a través de Twitter, atender a las noticias, y participar en las actividades. |
Y recuerda lo más importante: que podrás participar activamente aportando tus conocimientos, sugerencias, experiencias, inquietudes, dudas, o lo que se te ocurra (bueno, siempre que tenga que ver un poco con el tema, claro ;-).
Ah, por último aprovecho para felicitar a Luis Ruiz Pavón, promotor principal del grupo, por el trabajo realizado y el esfuerzo dedicado a este proyecto del que seguro nos vamos a beneficiar todos :-)
Publicado en: Variable not found.
lunes, 2 de mayo de 2011
Estos son los enlaces publicados en Variable not found en Facebook y Twitter desde el lunes, 25 de abril de 2011 hasta el lunes, 02 de mayo de 2011. Espero que te resulten interesantes. :-)
Publicado en: Variable not found
- Elijah Manor: "Fun With WebMatrix Helpers in ASP.NET MVC 3"
Fecha: 29/04/2011 - Elijah Manor: "Preventing Javascript Encoding XSS attacks in ASP.NET MVC" by Jon Galloway
Fecha: 29/04/2011 - Jurjen Knarren: Single Action Controllers with ASP.Net MVC
Fecha: 29/04/2011 - Saving images to SQL Server Compact with Entity Framework 4.1 Code First.
Fecha: 29/04/2011 - Muy interesante: Phil Haack: Project Silk: An example of rich Ajax website on ASP.NET MVC, jQuery UI, etc.
Fecha: 29/04/2011 - José Manuel Alarcón: En mi blog técnico: "¿Qué es un deadlock o interbloqueo?"
Fecha: 28/04/2011 - Elijah Manor: "ASP.NET MVC 3 Scaffolding Quick Start"
Fecha: 27/04/2011 - David Noël_hayden: Using EF Code First and Database Initializers with MvcScaffold in ASP.NET MVC
Fecha: 27/04/2011 - David Noël: A free .NET Decompiler, called JustDecompile, from Telerik was released as beta.
Fecha: 27/04/2011 - Phil Haack: Conditional filters in ASP.NET MVC 3. learn to apply a filter to actions based on any criteria
Fecha: 26/04/2011 - Alex Casquete: Hay gente que todavía no tiene claro por qué no utilizar el DNI como clave primaria. Entre otras cosas, por esto.
Fecha: 25/04/2011
Publicado en: Variable not found
domingo, 1 de mayo de 2011
El encargado de la charla, Pablo Escribano, coordinador del grupo de usuarios y experto en la materia, realizará una presentación de la plataforma describiendo conceptos específicos como Activity, Intent o Service, y comparará dos tecnologías que nos permiten desarrollar aplicaciones para la misma, como son Java y Mono para Android, siempre con demostraciones prácticas.
Una magnífica oportunidad para los que, como un servidor, aún no ha tenido ocasión de ponerse las pilas con estos temas… y si sabéis algo, seguro que podéis seguir aprendiendo a la vez que pasamos un buen rato.
Será a las 17:00h en las oficinas de MECUS:
Avenida de García Morato, 9, Nave 8
41011 Sevilla
Ver mapa más grande
El aforo es muy, pero muy limitado, así que, si os interesa el tema, ya estáis tardando en registraros ;-)
Registro: Programación de Aplicaciones para Android bajo .Net y Java
¡Nos vemos por allí!
Publicado en: Variable not found.