Come spostare il controllo ASP.NET PlaceHolder da pagina controlla collezione per l'uscita di un controllo personalizzato?

StackOverflow https://stackoverflow.com/questions/2344385

Domanda

Le scrivo un controllo ASP.NET personalizzato.

Nel mio codice di controllo personalizzato, trovo un controllo PlaceHolder nella pagina in questo modo:

this.myPlaceholder = Page.FindControl("placeholder1") as PlaceHolder;

Poi, rendo il segnaposto come uscita del controllo personalizzato:

protected override void Render(HtmlTextWriter output)
{
    if (this.myPlaceholder != null)
    {
        this.myPlaceholder.RenderControl(output);
    }
}

Tuttavia, questo fa sì che il segnaposto per eseguire il rendering in due posti -. Nell'output controllo personalizzato (buono) e nella posizione originale nella pagina (cattivo)

C'è un modo posso rimuovere questo segnaposto dalla pagina in modo che viene emesso solo all'interno del controllo personalizzato?

È stato utile?

Soluzione

L'oggetto pagina (e tutti i controlli web) ha un insieme di controlli ... chiamati, abbastanza comodamente, Controlli. Così Page.Controls.Remove (myPlaceholder) dovrebbe fare il trucco.

Anche se ... ASP.NET potrebbe lamentarsi di un controllo di modifica suo genitore. In tal caso, probabilmente è necessario chiamare un metodo sulla tua pagina genitore per fare il lavoro sporco, o di sparare un evento che gestisce il vostro genitore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top