Using Find Control (alternative of Master Page Properties Exposing) in VB.Net

Introduction

I have already discussed about Master Page Properties Exposing in my previous, 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 Object, ByVal 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.

HAVE A GREAT CODING!


Similar Articles