ASP.NET Master Page Controls in Content Page

ASP.NET Master Page Controls: जब हम हमारे Application में Content-Page Create करते हैं, तो Default रूप से सभी Content Pages Automatically Master-Page में Specify किए गए Title को ही Use कर लेते हैं। परिणामस्वरूप सभी Content-Pages का Title समान ही दिखाई देता है, जो कि SEO की दृष्टि से ठीक नहीं होता। इसलिए हम इस स्थिति को Avoid करने के लिए अपने Content-Page में Specify किए गए @Page Directive में Title Attribute को Specify कर सकते हैं। जैसे:

<%@ Page Title="Content Page" Language="C#" %>

जबकि यदि हम चाहें तो अपने Content-Page के Title को Programmatically भी Handle कर सकते हैं और ऐसा करने के लिए Content-Page के Code में Master Object को Use कर सकते हैं। इस Master Object में Title नाम की एक Property होती है, जो कि हमारे Content-Page के Title को Represent करता है। इसलिए इस Property को Set करके हम हमारे Content-Page के Title जरूरत को अनुसार Change कर सकते हैं। जैसे:

File Name: Default.aspx 
<%@ Page Title="" Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<script runat="server">
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        lblHello.InnerHtml = "<h3>Hello! " + txtName.Text + " How are you?</h3>";
    }
    
    protected void Page_LoadComplete(object sender, EventArgs e)
    {
        Master.Page.Title = "Content Page";
    }
</script>

<asp:Content ID="Content1" runat="server" contentplaceholderid="cphLeft">
    <form id="form1" runat="server">
        <asp:Label ID="lblName" runat="server" Text=""></asp:Label>
        <asp:TextBox ID="txtName" runat="server"></asp:TextBox>
        <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" />
    </form>
</asp:Content>

<asp:Content ID="Content2" runat="server" contentplaceholderid="cphRitht">
    <span id="lblHello" runat="server">Hello! How are you?</span>
</asp:Content>

जब हम उपरोक्तानुसार तरीके से अपने Content-Page में Page_LoadComplete() Event Handler Method को Define करते हैं, तो Resultant Webpage के Title पर हमें निम्न चित्रानुसार “Content Page” नाम का Title दिखाई देता है, जिसे हमने इस Event Handler द्वारा Master.Page.Title Attribute में Set किया है:

ASP.NET Master Page Controls

इसी तरह से जब हम Content-Page के माध्‍यम से Master-Pages के साथ प्रक्रिया कर रहे होते हैं, तब वास्तव में हम Content-Page में Master-Page के विभिन्न Controls व Properties को आसानी से Access व Manipulate कर सकते हैं।

जब Content-Page द्वारा Master-Page को Inherit किया जाता है, तब Master-Page को Content-Page में Master नाम के Object द्वारा Access and Manipulate किया जा सकता है। इस Property को Use करके हम Master-Page के Controls की Values या Custom Properties को अपने Content-Page में Access व Manipulate कर सकते हैं।

इसे समझने के लिए हम एक उदाहरण देखते हैं, जिसमें हम Master-Page में एक GUID Create करते हैं और फिर इस GUID को Content-Page में Retrieve करते हैं। इस उदाहरण को Create करने के लिए हमें Master-Page में Page_Load Event को Use करना होगा और Master-Page पर एक Label Web Control को Place करना होगा:

File Name: MasterPage.master 
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>

<!DOCTYPE html>
<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            lblGUID.Text = System.Guid.NewGuid().ToString();
        }
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
    …
    …
</html>

जब हम उपरोक्तानुसार अपने Master-Page को Modify करते हुए उसमें एक Label Control को Place करते हैं, जो कि User के लिए एक Unique GUID Display करता है, उसके बाद हम हमारे किसी भी Content-Page में इस Control को Access कर सकते हैं और ऐसा करने के लिए हम कई तरीके Use करते सकते हैं, जहां पहले तरीके के रूप में हम Master-Page के FindControl() Method को Use कर सकते हैं। जैसे:

File Name: Default.aspx 
<%@ Page Title="Content Page" Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<script runat="server">
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        lblHello.InnerHtml = "<h3>Hello! " + txtName.Text + " How are you?</h3>";
    }
    
    protected void Page_LoadComplete(object sender, EventArgs e)
    {
        lblCPGUID.Text = (Master.FindControl("lblGUID") as Label).Text;
    }
</script>

<asp:Content ID="Content1" runat="server" contentplaceholderid="cphLeft">
    <form id="form1" runat="server">
        <asp:Label ID="lblName" runat="server" Text=""></asp:Label>
        <asp:TextBox ID="txtName" runat="server"></asp:TextBox>
        <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" />
    </form>
</asp:Content>

<asp:Content ID="Content2" runat="server" contentplaceholderid="cphRitht">
    <span id="lblHello" runat="server">Hello! How are you?</span><br />

    <b>GUID Inherited from MasterPage: </b>
    <asp:Label ID="lblCPGUID" runat="server"></asp:Label>
</asp:Content>

इस Modified Content-Page में हमने lblCPGUID नाम के ID का एक Label Control Create किया है और Page_LoadComplete() Event Handler में निम्नानुसार Code के माध्‍यम से Master-Page में Specify किए गए lblGUID ID वाले Label Control को Master.FindControl() Method द्वारा Content-Page में Access करके Content Page में Create किए गए lblCPGUID ID वाले Label Control की Text Property में Assign किया है।

परिणामस्वरूप जब इस Content-Page को Run किया जाता है, तो हमें प्राप्त होने वाला Resultant Output Page निम्नानुसार होता है:

ASP.NET Master Page Controls

इस Code में हमने Page_LoadComplete() Event Handler Method में Master-Page के lblGUID Label Control को इसलिए Access किया है, ताकि जब Content-Page पूरी तरह से Render होने के लिए तैयार हो, तब Master-Page के Controls को Access किया जाए। क्‍योंकि इस Event को ASP.NET 2.0 में Master-Page Concept के साथ ही Include किया गया है, जो कि Page_Load Event के Fire होने के Just बाद में Fire होता है।

इसलिए Master-Page में Define किए गए Page_Load() Event Handler के Execute होते ही, Master-Page में GUID Generate हो जाता है, जिसे Master-Page के lblGUID की Text Property में Store कर दिया जाता है।

फिर इस Event के तुरन्त बाद Content-Page का Page_LoadComplete Event Trigger होता है, जिसके लिए Master-Page द्वारा Triggered Page_Load Event के Response में Generated GUID उपलब्ध रहता है, जिसे Page_LoadComplete() Event Handler Method में Access किया जा सकता है। Continue…

Advance ASP.NET WebForms with C# in Hindi - BccFalna.com: TechTalks in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook Advance ASP.NET WebForms with C# in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।

Advance ASP.NET WebForms in Hindi | Page:707 | Format: PDF

BUY NOW GET DEMO REVIEWS