Blogger news

17:09
0
En esta post vamos a ver cómo evitar que después de hacer un post la propiedad de una clase de tipo string vacía sea modificada a un valor null. 

Como sabemos un elemento de tipo string tiene como valor por defecto 'null'. El ejemplo que vamos a analizar, utiliza MVC de .NET. 

Tenemos un formulario que utiliza el método POST vía AJAX para enviar los campos hacia el controlador, es ahí donde el método de la acción recibe como parámetro el objeto.


Aquí el código que realiza la petición POST (los campos del data pueden enviarse utilizando .serialize() y quedaría mejor el código, pero continuemos...)
 
La clase implementa las propiedades de cada campo que utilizamos en el formulario.
Dentro del controlador, tenemos la acción que recibe como parámetro la clase que implementa los campos de nuestro formulario.

 
Vamos a realizar la primera petición dejando algunos campos vacíos, y veremos cómo llega al parámetro de la acción del controlador.
 
Como podemos ver, la propiedad Phone2 tiene un valor null, esto implicaría hacer una validación extra para verificar si la propiedad tiene asignado un valor, primero validar si es diferente a nulo y posterior validar si la propiedad contiene un valor.
 
Vamos a ver cómo podemos solucionar esto, primero haremos uso de la clase DisplayFormatAttribute (que está dentro de System.ComponentModel.DataAnnotations). Usando la propiedad ConvertEmptyStringToNull, que según la MSDN dice: Obtiene o establece un valor que indica si los valores de cadena vacía ("") se convierten automáticamente en nulo cuando el campo de datos se actualiza en el origen de datos.
 
Aplicando este atributo a la propiedad, quedaría así:

Si volvemos a ejecutar nuestra aplicación, podemos ver el valor que ahora recibe la propiedad cuando el campo se envía como vacío.

 
Para mayor referencia tenemos a la MSDN con un ejemplo en la siguiente dirección: http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.displayformatattribute.aspx

 

Ailas....
Next
This is the most recent post.
Entrada antigua