• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1891
  • Last Modified:

ASP.NET MasterPage How to Access controls within a contentplaceholder

I am trying to create property "genMessage" within a masterpage and access the panel control within a contentholder and read/write the text contained within it.  I can access the contentplaceholder,  it shows a control count of 1,  but I do not see how to read/write the text within it (at the moment the text is within a div tag...)


<<<EXCERPT FROM MASTERPAGE>>>>
...
...
...
    <div>
        <asp:contentplaceholder id="MenuContainer" runat="server">
            <a href="~/CustomNavBar.ascx">~/CustomNavBar.ascx</a>
        </asp:contentplaceholder>
        
        <asp:contentplaceholder id="mainContentContainer" runat="server">
        </asp:contentplaceholder>
 
        <asp:contentplaceholder id="generalMessages" runat="server">
        
          <asp:Panel ID="msgContent" runat="server"  BackColor="RosyBrown" ForeColor="Aqua" Width="631px">
            <div>
            This page is still under contruction.  Please check you email for update information or check back soon.
            </div>
          </asp:Panel>
        
        </asp:contentplaceholder>
 
    </div>
...
...
...
 
<<<From The Associated MasterPage vb file>>>
 
    Public Property genMessage() As String
        Get
            Dim cph As ContentPlaceHolder = New ContentPlaceHolder
            cph = Me.FindControl("generalMessages")
            If Not cph Is Nothing Then
                Dim lctrl As LiteralControl = New LiteralControl
                lctrl = CType(cph.Controls.Item(0), LiteralControl)
                Return pnl.ToString
 
            Else
                Return String.Empty
            End If
 
        End Get
 
        Set(ByVal value As String)
            Dim pnl As Panel = New Panel
            pnl = Me.FindControl("msgContent")
            If Not pnl Is Nothing Then
                Page.ClientScript.RegisterClientScriptBlock(GetType(Page), "GENERALMESSAGE", value)
                'Page.RegisterClientScriptBlock("SETGENERALMESSAGE", value)
            End If
        End Set
    End Property

Open in new window

0
Howard Bash
Asked:
Howard Bash
  • 2
2 Solutions
 
Ajay SharmaCommented:
I think line no. 37 should be corrected.

instead of
Return pnl.ToString

it should be
Return lctrl.ToString

==========

Secondly Asp.net Panel control does not have a Text property, so if you want to get set the text use label inside panel
0
 
sm394Commented:
you can access controls in contentplaceholder  by using  controls client ID property
<%= btnSearch.ClientID %> In your case  msgContent.ClientID
also this is good article about Master pages and content pages

http://www.odetocode.com/articles/450.aspx
read section "FindControl, JavaScript, and Naming Containers" for more info
0
 
sm394Commented:
0
 
Howard BashSenior Software EngineerAuthor Commented:
I appreciate the pointers.  I only wish that one of my experts had included some trival complete example.  But,  definitely headed me in the right direction.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Cloud Class® Course: Microsoft Office 2010

This course will introduce you to the interfaces and features of Microsoft Office 2010 Word, Excel, PowerPoint, Outlook, and Access. You will learn about the features that are shared between all products in the Office suite, as well as the new features that are product specific.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now