Usa la directiva #Region para organizar tu código

Cuando tienes una clase de VB.NET que se empieza a hacer muy larga, puedes organizarla en partes utilizando la directiva #Region. Si estás trabajando en Visual Studio puedes colapsar y extender estas porciones de código con un clic, lo cual te ayuda a enfocarte en la porción de código que estés utilizando en cada momento.

La sintaxis es la siguiente:

Region "Nombre de tu region"
   'Tu código aquí…
End Region

Te pongo unas imágenes para que veas cómo lo maneja Visual Studio:

Sin colapsar:

Visual Studio

Colapsado:

Visual Studio

No se pudieron habilitar las restricciones. Una o varias filas contienen valores que infringen las restricciones NON-NULL, UNIQUE o FOREIGN-KEY.

Trabajando con una base de datos de SQL Server similar a la siguiente:

der

En un proyecto de ASP.NET tenía mi DAL (archivo xsd) en el cual agregué un TableAdapter con la siguiente consulta:

SELECT
Alumno.IdAlumno,
Alumno.Nombre, Tarea.Concepto
FROM
Alumno INNER JOIN Tarea
ON Alumno.IdAlumno = Tarea.IdAlumno

Al tratar de utilizar los datos en una página ASPX mediante un ObjectDataSource, me aparecía este error:

No se pudieron habilitar las restricciones. Una o varias filas contienen valores que infringen las restricciones NON-NULL, UNIQUE o FOREIGN-KEY.

En inglés:

Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints

Nota: Esto ocurre normalmente en consultas con JOINS. Antes de seguir las instrucciones que voy a dar, intenta borrar tu TableAdapter y volverlo a crear, puede ser que hayas modificado el tamaño de algún campo en la base de datos y no lo hayas ajustado en el xsd. Si no se arregló, continúa leyendo.

Investigando, encontré, que si quito la llave Alumno.IdAlumno de la consulta se soluciona el problema, sin embargo no lo puedo hacer porque en este caso específico necesito la llave para pasarla como parámetro en un vínculo a otra página.

Como podrás ver, la llave IdAlumno está tanto en la tabla Alumno (llave primaria), como en Tarea (llave foránea). Para solucionar el problema, utiliza en tu consulta la llave foránea (Tarea.IdAlumno) en vez de la primaria (Alumno.IdAlumno), las dos llevan siempre el mismo valor, y solucionarás el problema, así:

SELECT
Tarea.IdAlumno,
Alumno.Nombre, Tarea.Concepto
FROM
Alumno INNER JOIN Tarea
ON Alumno.IdAlumno = Tarea.IdAlumno

La colección de controles no puede modificarse porque el control contiene bloques de código (por ej. <% ... %>)

Tengo una Web Form basada en un Master Page. La Web Form me marca el siguiente error:

La colección de controles no puede modificarse porque el control contiene bloques de código (por ej. <% … %>)

El problema es que tengo un bloque de código javaScript en mi Web Form, en el cual utilizo la siguiente línea:

$find("<%= RadAjaxManager1.ClientID %>").ajaxRequest("Rebind");

Por eso es que marca el error relacionado con las etiquetas <% ... %>

El código javaScript estaba en el cuerpo de la página, solamente lo debes mover al head y se soluciona el problema. En mi Web Form esto ocurre en un ContentPlaceHolderID, de tal forma que puse el código en esa zona:

<asp:content id="Content1" contentplaceholderid="head" runat="Server">
   <script type="text/javascript">
      //Pon aquí el código que contiene las líneas que usan <% ... %>, como la que sigue<
      //$find("<%= RadAjaxManager1.ClientID %>").ajaxRequest("Rebind");
   </script>
</asp:content> 

Listo, con eso queda solucionado el problema.

BC30002: Type ‘System.Data.Linq.Mapping.DatabaseAttribute’ is not defined.

Si estás utilizando LINQ en tu aplicación de asp.net y te sale este error:

BC30002: Type 'System.Data.Linq.Mapping.DatabaseAttribute' is not defined.

Es probable que no hayas hecho referencia del assembly en el archivo web.config.
Entre el tag assemblies y /assemblies de tu archivo web.config coloca lo siguiente:

<add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089">

¡Suerte!

Cómo encontrar las dimensiones de una imagen subida mediante FileUpload

Si cuentas con un control como este:

<asp:fileupload id="Imagen" runat="server">

Mediante el cual pretendes recibir una imagen, y quieres validar el ancho y alto de ésta, haz lo siguiente en tu código de servidor:

Dim LaImagen As New System.Drawing.Bitmap(Imagen.PostedFile.InputStream)
If LaImagen.Width <> 680 Or LaImagen.Height <> 300 Then
'Pon aquí­ tu código correspondiente
End If

En el ejemplo anterior estamos diciendo “Si la imagen no mide de ancho 680 pixeles o no mide de alto 300 pixeles, entonces…”.

Esto es útil para combinarlo con un “CustomValidator” y validar el tamaño de la imagen que estás recibiendo.