Using Find Control (alternative of Master Page Properties Exposing) in ASP.NET


Introduction

Download

I have already discussed about Master Page Properties Exposing in my previous article, in that article we have already discussed how to modify a property of a control located in a Master Page from a content page by exposing a property from the Master Page. We have an alternative here by using Find Control with Master Page. If we need to modify a control in a Master Page, we can use the FindControl() method in a content page. For example, the Master Page given below includes a Literal control named MasterBodyTitle. This Master Page does not include any custom properties by default.

Master Page Code

<%
@ Master Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
    Public Property MasterBodyTitle() As String
        Get
            Return ltlMasterBodyTitle.Text
        
End Get
        Set(ByVal Value As String)
            ltlMasterBodyTitle.Text = Value
        
End Set
    End Property
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<
head id="Head1" runat="server">
    <style type="text/css">
        html
        {
            
background-color:silver;
        }
        
.content
        {
            
margin:auto;
            
width:700px;
            
background-color:white;
            
padding:10px;
        }
        
h1
        {
            
border:3px dotted blue;
        }
    
</style>
    <title>Using Find Control with Master Page</title>
</
head>
<
body>
    <form id="form1" runat="server">
    <div class="content">
    <h2><asp:Literal ID="ltlMasterBodyTitle" runat="server" /></h2>
        <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
        </asp:ContentPlaceHolder>
    </div>

    
</form>
</
body>
</
html>

Default.aspx Code

<%
@ Page Title="" Language="VB" MasterPageFile="~/MasterPage.master" %>
<script runat="server">
    Protected Sub Page_Load(ByVal sender As ObjectByVal e As System.EventArgs)
        
If Not Page.IsPostBack Then
            Dim ltlMasterBodyTitle As Literal 
CType(Master.FindControl("ltlMasterBodyTitle"), Literal)
            ltlMasterBodyTitle.Text = 
"This title is from content page
(this is from content page for Master Page)."
        End If
    End Sub

</
script>
<asp:Content ID="Content2" 
ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
There is some data for the page body (this is from content page).
</asp:Content>


The FindControl() method enables us to search a naming container for a control with a particular ID. The method returns a reference to the control.

Comments

Post a Comment

Popular posts from this blog

Customize User's Profile in ASP.NET Identity System

Lambda two tables and three tables inner join code samples