دوشنبه ۲۷ دی ۱۳۹۵
 
 
 
کلمه عبور خود را فراموش کرده اید؟
 

 
 
 دسترسی به کنترل ها و متد های Master Page
ASP.NET
تاریخ ثبت:  ۸۹/۵/۲۶
تعداد نمایش:  ۸۷۷۸
  نویسنده: مهران شیخ الاسلامی
 
   ۱۳  نفر تا این لحظه به این مقاله امتیاز داده اند.
 
   Bookmark and Share

احتمالا تا به حال از Master Page استفاده کرده اید و این نیاز را داشته اید که یک متد یا یک صفت (Property) که در یک Master Page تعریف شده را از درون یک فرم (Web form) فراخوانی کنید.اولین چیزی که ممکن است به ذهنتان برسد، استفاده از دستوری مانند ()Master.MethodName باشد. ولی همچین چیزی کار نمی کند. خوشبختانه یک راه ساده برای این کار وجود دارد. ابتدا یک مرور سریع روی چگونگی ساخت Master Page میکنیم و سپس به ارائه بحث اصلی می پردازیم.

چگونگی ساخت یک Master Page برای استفاده در یک فرم

یک وبسایت جدید ASP.NET در ویژوال استودیو ایجاد می کنیم، این پروژه خود شامل فایل default.aspx است. یک Master Page به نام DefaultLayout.master در همان مسیر اصلی وبسایت ایجاد کنید. تمام محتویات فابل جدید را مطابق شکل زیر تغییر دهید:

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="

 DefaultLayout.master.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

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

<head runat="server">

    <title></title>

    <asp:ContentPlaceHolder id="head" runat="server">

    </asp:ContentPlaceHolder>

</head>

<body>

    <form id="form1" runat="server">

    <div>

        <h1><asp:Label ID= "lblHeading" runat="server" /></h1>

        <asp:ContentPlaceHolder id="MainPageContent" runat="server">

        </asp:ContentPlaceHolder>

    </div>

    </form>

</body>

</html>

همانطور که می بینید، یک کنترل Label به نام lblHeading و یک کنترل ContentPlaceHolder به نام MainPageContent را در آین فایل قرار دهید. Label کنترلی است که می خواهیم یک متغیر را از فرم default.aspx در ان قرار دهیم، به وسیله یک متد درون MasterPage. ContentPlaceHolder برای قرار دادن محتوا در فایل default.aspx  است. حال متد ساده زیر را در فایل default.master تعریف میکنیم.

public void SetPageHeading(string heading)

    {

        lblHeading.Text = heading;

    }

این متدی است که قرار است از فایل کد default.aspx به آن دسترسی داشته باشیم. پارامتر PageHeading برای مقدار دادن به label به کار می رود.

حال به فایل default.aspx می رویم و کد آن را مطابق زیر تغییر دهید.

<%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="~/

 DefaultLayout.master"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

 <asp:Content ID="HomePageContent" ContentPlaceHolderID="MainPageContent"

 runat="server">

 </asp:Content>

دسترسی به  متد های Master Page از درون فرم

تنها چیزی که باقی مانده قرار دادن label درون فایل Master Page از طریق کد است. به Code View فایل default.aspx بروید و در رویداد Page_Load آن قطعه کد زیر را قرار دهید

protected void Page_Load(object sender, EventArgs e)

    {

        ((DefaultLayout)this.Master).SetPageHeading("This heading is set from

 inside Default.aspx");

    }

این مهمترین خط از تمام این این آموزش است. شیئ this.Master را به شکل DefaultLayer در می آورد (cast می کند) که نوع MasterPage در این سایت است (دقت کنید که نام Master Page ما DefaultLayout است) بعد از تبدیل، متد به صورت عادی مانند هر متد دیگری قابل دسترسی است.

دسترسی به کنترل های Master Page از درون فرم

اگر می خواهید به کنترل های درون Master Page دسترسی داشته باشید، باید از متد ()FindControl مطابق زیر استفاده کنید:

protected void Page_Load(object sender, EventArgs e)

    {

        Label lblHeading;

        lblHeading = (Label)Master.FindControl("lblHeading");

        lblHeading.Text = "This heading is set from inside Default.aspx";

    }

 

  کیفیت مقاله ارائه شده از نظر شما   
برای دادن رتبه به این مقاله می بایست Login کرده باشید.
  درباره نویسنده
مهران شیخ الاسلامی
همه مقاله های نوشته شده توسط این کاربر (۴)
 
  پیام جدید
صفحه ۱ - پیامهای اصلی ۱ تا ۲ از مجموع ۲ پیام اصلی
اولین قبلی بعدی

 عنوان فرستنده تاریخ
 
تشکر مجید سامانی ۱۳۹۲/۱/۶
 
استفاده از نام مستر پیج سیده پریسا موسوی نژاد ۱۳۹۰/۸/۶
پاسخ به: استفاده از نام مستر پیج مهران شیخ الاسلامی ۱۳۹۰/۸/۷
اولین قبلی بعدی

Copyright © 2006 - 2016 All Rights Reserved.
Please direct your questions or comments to