Edición:
tengo un margen de beneficio como esto (sólo las líneas importantes):ASP/C# código subyacente no puede alcanzar el control del marcado
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="RTDeluxe.ascx.cs"
Inherits="MainSolution.CONTROLTEMPLATES.Kunde.RTDeluxe" %>
<ul id="linkUl" class="teaserLinksUL" runat="server"/>
El código subyacente:
namespace MainSolution.CONTROLTEMPLATES.Kunde
public partial class RTDeluxe : UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
linkUl.InnerHtml = string.Empty;
}
}
Puedo acceder al ul
dentro del código subyacente y no obtener ningún error de compilación. Pero, cuando depuro el código obtengo un NullReferenceException
porque linkUl
es NULL.
Primero pensé que los espacios de nombres son la razón. Pero, después de varios intentos, estoy seguro de que son correctos. El FileLocation
parece ser correcto y la carpeta controltemplates
de mi iis tiene una carpeta "Kunde" con los correspondientes archivos ascx.
Tengo otros archivos .ascx con la misma estructura -> funcionan como un amuleto.
Pregunta:
¿Hay otras razones que el espacio de nombres para tal comportamiento? ¿Tienes alguna pista donde pueda mirar?
Editar:
El archivo existe RTDeluxe.ascx.designer.cs, la linkUl
generada tiene el siguiente aspecto:
protected global::System.Web.UI.HtmlControls.HtmlGenericControl linkUl;
Edit2:
Ok, voy a tratar de responder a todas sus preguntas Gracias por su tiempo y comentarios!
- He reiniciado Visual Studio -> El problema persiste.
- También he limpiado la solución y he implementado una nueva. -> El problema persiste.
- Cuando depuro y verifico la jerarquía de control, puedo ver que la etiqueta NO está allí.
- Cuando cambio el ID, el compilador arroja un error en el código subyacente (que es el correcto). Si cambio la identificación allí, obtengo el mismo comportamiento que antes.
- También reinicié mi IIS y toda la pc -> Sin cambios.
- He agregado un atributo
Name
a la definición de linkul -> Sin cambios. - Cuando intento usar
FindControl
, devuelve NULL. - El target-framework es .NET 3.5
- El linkul NO está dentro de un repetidor o cualquier otro control.
- La eliminación/cambio de web.config tampoco conduce a una solución.
- Agregar
EnsureChildControls
antes de acceder allinkUl
no cambia nada. - Mover el código a Page_PreRender tampoco funciona.
Voy a probar sus sugerencias que no figuran aquí y añadirlas pronto.
Edit3:
Aquí el marcado completo:
<%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>
<%@ Assembly Name="Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="RTDeluxe.ascx.cs" Inherits="MainSolution.CONTROLTEMPLATES.Kunde.RTDeluxe" %>
<ul id="linkUl" class="teaserLinksUL" runat="server"/>
* Edit4:
autorización aquí algo de información adicional que descubrí: Cuando cambio algo en el margen de beneficio, como la adición de llanura html text NO es reconocido ni mostrado en el navegador. Cuando hago algo como esto:
Label label1 = new Label();
label1.Text = "hugo lives!";
Controls.Add(label1);
Se muestra. Parece que en el estudio visual todo está bien ... Pero "en vivo" en el servidor el código subyacente habla de un marcado extraño ...
¿Puede mostrar la definición generada por el compilador para linkUl? –
¿tiene el archivo RTDeluxe.designer.cs? – giammin
@giammin sí, he editado la pregunta. –