it-swarm-ru.tech

Как получить доступ к элементам управления контентом с главной страницы в 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;
}

но как я могу получить доступ к элементам управления контентом страницы с главной страницы. Предположим, что на странице содержимого есть текстовое поле, а на главной странице есть одна кнопка. Я хочу, чтобы, когда я нажимал на кнопку главной страницы, я хотел показать текст текстового поля на странице содержимого в метке главной страницы. как этого добиться. Пожалуйста, помогите мне с примером кода. Благодарю.

13
Thomas

В событии нажатия кнопки главной страницы должен быть доступ к содержимому страницы:

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

На мой взгляд, еще лучше использовать повышение события с главной страницы и перехватывать это событие на странице contenet, например, для изменения некоторых contenet на этой странице. Основным преимуществом является возможность повторного использования. В будущем вы можете захотеть изменить содержимое на другой странице содержимого с главной страницы, и в этом случае вам следует только добавить обработчик событий на эту страницу содержимого без изменения кода на главной странице. При таком подходе вам не нужно жестко задавать управляющее имя на какой-либо странице контента. Более того, вам вообще не следует добавлять зависимость для контроля какого-либо контента.

Пример реализации вы можете найти здесь , например. 

3
apros

Это было давно, но я считаю, что вы можете сделать это, используя ContentPlaceHolder в качестве ссылки:

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

вы должны искать заполнитель содержимого с главной страницы, а затем заполнитель содержимого у дочернего элемента главной страницы

this.Page.Master.FindControl("ContentPlaceHolder1").FindControl("controlAFromPage");
1
john carlo

Вы можете найти контроль с помощью этого:

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

Источник: http://xpode.com/ShowArticle.aspx?ArticleId=629

0
Rohit

Код C # внутри Site.Master:

<div>
  <asp:ContentPlaceHolder ID="MainContent" runat="server">
  </asp:ContentPlaceHolder>
</div>

Код внутри Site.Master.cs:

public partial class SiteMaster : MasterPage
{
    protected void Page_Load(object sender, EventArgs e)
    {          
        ToolkitScriptManager1.RegisterPostBackControl(this.MainContent.FindControl("btnOnDefaultPage"));            
    }
}

Это пример того, как клиентский элемент управления Default.aspx ссылается на Site.Master.cs.

0
SHAHZAD MIAN