es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

ASP.NET Web Forms: ¿Por qué el setter de la propiedad de un control personalizado no es llamado por el padre utilizando una expresión de enlace de datos?

¿Por qué no se llaman los setters de las propiedades de mi control personalizado por parte de la página madre cuando uso expresiones de enlace de datos para establecer las propiedades del control? Los setters se llaman cuando se utiliza una constante para establecer las propiedades del control.

MyPage.aspx:


He establecido un punto de interrupción en el setter y nunca se llama cuando cargo la página.

Sin embargo, si cambio MyPage.aspx de/a esto, funciona:

¿Es posible llamar al setter utilizando la expresión de enlace de datos? ¿Qué estoy haciendo mal?

Tags:  ,

Answer

  1. Avatar for davy.ai

    La razón por la cual los setters de propiedades del control personalizado no se están llamando desde la página principal cuando se utilizan expresiones de enlace de datos para establecer las propiedades del control es que las propiedades del control se establecen durante la etapa de enlace de datos del ciclo de vida de la página. Por defecto, la etapa de enlace de datos ocurre después de la etapa de inicialización del control, lo que significa que las propiedades del control ya se han establecido antes de evaluar la expresión de enlace de datos.

    Para que se llame al setter utilizando la expresión de enlace de datos, debes asegurarte de que la expresión de enlace de datos se evalúe antes de la etapa de inicialización del control. Esto se puede lograr llamando al método Page.DataBind en el evento Page_PreInit de la página principal:

    “`C#
    protected void Page_PreInit(object sender, EventArgs e)
    {
    Thirteen = 13;
    Page.DataBind();
    }


    Esto obligará a evaluar la expresión de enlace de datos antes de la etapa de inicialización del control, por lo que los setters de propiedades del control se llamarán con los valores correctos. Alternativamente, puedes usar un enfoque más declarativo mediante el establecimiento de las propiedades del control en la marca utilizando la sintaxis <%= %>: ```ASP.NET <foo:mycontrol id="bar" runat="server" myproperty="<%= Thirteen %>"></foo:mycontrol>

    Esto también asegurará que los setters de propiedades se llamen con los valores correctos.

Comments are closed.