2011-02-12 17 views
13

es muy fácil acceder a la página maestra de control de la página de contenido comoCómo acceder a los controles página de contenido de la página principal en asp.net

protected void Page_Load(object sender, EventArgs e) 
{ 
    // content page load event 
    DropDownList thisDropDown = this.Master.FindControl("someDropDown") as DropDownList; 
    userLabel.Text = thisDropDown.SelectedValue; 
} 

pero ¿cómo puedo acceder a los controles de página de contenido de la página principal. supongamos que hay un cuadro de texto en la página de contenido y un botón en la página maestra. Quiero que cuando haga clic en el botón de la página maestra, entonces quiera mostrar el texto del cuadro de texto en la página de contenido en la etiqueta de la página maestra. cómo lograrlo por favor ayúdame con la muestra de código. Gracias.

Respuesta

32

En el botón de página principal evento de clic debe acceder a contenidos de la página a través de: -

protected void Button1_Click(object sender, EventArgs e) 
{ 
    TextBox TextBox1 = (TextBox)ContentPlaceHolder1.FindControl("TextBox1"); 
    if (TextBox1 != null) 
    { 
     Label1.Text = TextBox1.Text; 
    } 
} 
+1

+1 por ser completo. ;-) –

+0

de nuevo +1 por ser completo. ;-) – Monodeep

+1

Tan estúpido que se necesita tanto código ... No estoy atribuyendo eso a tu respuesta, sino al modelo de ASP.net – user3308043

3

Ha sido un tiempo, pero creo que puede hacerlo mediante el uso de la ContentPlaceHolder como referencia:

Control control = this.myContentPlaceHolder.FindControl("ContentPageControlID"); 
3

En mi opinión, es aún mejor utilizar el evento de la página Maestra y atrapar este evento en la página contenet para cambiar algunos contenidos en esta página, por ejemplo. La principal ventaja es la reutilización. En el futuro, es posible que desee cambiar el contenido en otra página de contenido de la página Maestra y, en este caso, solo debe agregar el controlador de eventos a esta página de contenido sin cambiar el código en la página maestra. Dentro de este enfoque, no es necesario codificar el nombre del control desde alguna página de contenido. Además, no debes agregar dependencia para el control de algún contenido.

Un ejemplo de implementación puede encontrar here, por ejemplo.

1

usted debe buscar contentplaceholder de la página principal y luego contentplaceholder en hijo de la página maestra

this.Page.Master.FindControl("ContentPlaceHolder1").FindControl("controlAFromPage"); 
+0

Me alivió ... ¡páginas maestras, woff! y luego este largo camino de búsqueda !! – Irfan

0

puede encontrar de control, utilizando la siguiente:

ContentPlaceHolder contentPage = Page.MasterPage.FindControl("ContentPlaceHolder1") as ContentPlaceHolder; 
Label lblHead =(Label)contentPage.FindControl("lblHeading"); 
Response.Write(lblHead.Text); 

Fuente: http://xpode.com/ShowArticle.aspx?ArticleId=629

-1

Pruebe este código

Page.Master.FindControl("MainContent").FindControl("DivContainer_MyProfile").Visible = True 
+1

¡Bienvenido a Stack Overflow! Te recomiendo [haz el recorrido] (http://stackoverflow.com/tour). Al dar una respuesta, es preferible dar una explicación de por qué su respuesta es la indicada. –

Cuestiones relacionadas