2014-05-13 23 views
1

我需要访问母版页上的多个文本框。文本框是在单独的Web控件中声明的,它不会让我调用文本框的名称,以便我可以用数据填充它们。我有多个文本框就像我说的,但例如,当我尝试写入txtName它不会让我即使当我点击设计视图它说它在那里。访问母版页上的Web控件中的文本框

有人可以帮我吗?

+1

[如何从内容页面访问母版页控件](http://stackoverflow.com/questions/15573505/how-to-access-master-page-control-from-content-page) – Paddy

+0

@帕迪OP解释完全相反。它不是重复的。 '“文本框是在一个单独的Web控件中声明的''。 – Bharadwaj

+0

@Bharadwaj - 我不知道你是对的,但即便如此,这里有一个答案,显示了如何从母版页访问内容页面:http://stackoverflow.com/questions/4979669/how-to -access-content-page-controls-from-master-page-in-asp-net?rq = 1但是,我不确定这是否是真正推荐的做法。 – Paddy

回答

2

将Web控件中的文本框作为属性公开。

在webcontrol.ascx

<asp:TextBox runat="server" id="txtName" /> 

在webcontrol.ascx.cs

public virtual TextBox TxtName { get {return txtName;} //note capitalization 

然后做同样的事情在母版页揭露网络控制。

在masterpage.master

<uc1:MyWebControl runat="server" id="MyWebControl1" /> 

在mastermage.master.cs

public virtual MyWebControl myWebControl{get {return myWebControl1;}} 

然后,让你的母版页强烈从内容页加入了MasterType指令类型。

Default.aspx中

<%@ MasterType TypeName="MyMasterPageClass" /> 

然后你可以从后面内容页面代码访问它。在default.aspx.cs

Master.myWebControl.TxtName.Text="Hello, world!"; 

有必要做的原因是,在的.aspx,的.ascx和的.master页面宣布控制是protected代替public而且也没有办法(截至目前)改变他们,我知道。所以我们可以使用属性来公开这些控件。

相关问题