viernes, 20 de septiembre de 2013

ASP.NET ERROR en ValidatorCalloutExtender. "El control extensor 'xxx' no es un control extensor registrado."


 PROBLEMA 

Durante la ejecución surge el error siguiente:
El control extensor 'vce1_ValidatorCalloutExtender' no es un control extensor registrado. Los controles extensores deben registrarse mediante RegisterExtenderControl() antes de llamar a RegisterScriptDescriptors(). Nombre del parámetro: extenderControl

siendo vc1_ValidatorCalloutExtender el nombre de nuestro ValidatorCalloutExtender .

El problema aparece al usar un ValidatorCalloutExtender dentro de una sección div (o similar) que tenga el atributo visible="false".
 

 SOLUCIÓN 

Este bug puede ser evitable si dejamos el atributo visible de la sección div a true (su valor por defecto), e introducimos la acción de ocultar la sección div en el code behind, por ejemplo en el evento de página PreRenderComplete. Para ello habrá que introducir en la etiqueta div los atributos runat=server y id=div1 para que sea accedible desde el code behind.

Código en C#:
<div ID="div1" runat="server">


----

protected void Page_PreRenderComplete(Object sender, EventArgs e)
{
div1.visible= false;
}

jueves, 14 de febrero de 2013

ADO.NET ERROR. "En EntityDataSource, se debe especificar bien Type o bien DbType ..."


 PROBLEMA 

Durante la ejecución surge el error siguiente:
En EntityDataSource, se debe especificar bien Type o bien DbType (pero no ambos) para cada Parameter.

El problema aparece al usar la propiedad Where de un EntityDataSorce,
 

 SOLUCIÓN 

Vemos en la imagen de abajo, el editor de expresiones para la propiedad Where de un EntityDataSource. En la caja de la expresión establecemos la igualdad entre el atributo ID de la Entidad con un valor idTramite pasado por parámetro. Dicho parámetro se establece con el valor de la variable de sesión IDTRAMITE. Esto se configura en la parte inferior derecha, pero nosotros no hemos indicado en ningún sitio el tipo de datos del parámetro, y esto precisamente es lo que causa el error.

Para resolver el error basta con entrar en "Mostrar propiedades avanzadas" y establecer el tipo de datos en la propiedad 'Type' con el valor que corresponda, por ejemplo, Int32.



jueves, 24 de enero de 2013

ADO.NET Entity Framework y Oracle OTN. Error en ejecución "El valor especificado no es una instancia de tipo 'Edm.Decimal'".


 PROBLEMA 

Durante la ejecución surge el error siguiente “El valor especificado no es una instancia de tipo 'Edm.Decimal'. Nombre del parámetro: value”. Sin embargo, no existe ninguna propiedad de tipo Decimal en ninguna entidad del modelo de Entity Framework.

El error es causado por una propiedad de tipo Int32 que mapea un campo de tipo NUMBER (sin especificar longitud ni escala) en la tabla correspondiente.
 

 SOLUCIÓN 

Se arregla especificando longitud y escala de forma que el tipo del campo en la tabla sea NUMBER (10,2).