C#中在內容頁擷取其模板頁中的變數,或者值

來源:互聯網
上載者:User

標籤:

在CSDN的博文中看到了 muziduoxi 的文章:http://blog.csdn.net/muziduoxi/article/details/5386543 雖然裡面提到的方法沒有解決我的難題,但是我也是根據裡面的方法想到現在所用的方法的,所以還是需要感謝  因為我要的變數初始化的時候是空的,如果使用muziduoxi的方法就只能讀取到初始化時候的值,我做了個跟蹤,發現有模板頁的頁面啟動並執行時候是先運行本頁的變數的定義→  到模板頁的變數定義→ 到本頁的Page_Load方法→ 到模板頁的PageLoad方法,所以如果我要擷取的模板頁變數是在其Page_Load中初始化的話,那麼在本頁Page_Load中是讀取不到的,如果要擷取到的話方法就是:在本頁的aspx中的頁面上使用:<%=(this.Master asagency_web_agency_master).systemURL %>,至於為什麼是 agency_web_agency_master這個我理解的就是它把點號.換成了底線_,其實這個名稱會在你輸入完  as 然後空格的時候提示你的。
具體的代碼如下:
模板頁有個公開變數的定義:public string systemURL = "";
然後在內容頁的aspx代碼中直接使用:<%=(this.Master as agency_web_agency_master).systemURL %> 就可以正常輸出了。
而且不單單可以獲得欄位,也可以獲得對象,如果模板頁有一個類:public Model.gy_agencyInfo modagency = new Model.gy_agencyInfo(); 類有個欄位是:systemURL
在內容頁的aspx代碼中直接使用:<%=(this.Master as agency_web_agency_master).modagency.systemURL %> 就可以正常輸出。
為了方便自己記住 muziduoxi  的方法,特意把它粘貼到了我這裡,以方便自己查看:
擷取母模版頁的變數和屬性值: 模板頁:

[csharp] view plaincopyprint?
  1. public partial class MasterPage : System.Web.UI.MasterPage  
  2. {  
  3.   
  4.     public int UserId {  
  5.         get { return 342; }  
  6.     }  
  7.   
  8.     public string UserName = "shenjk";  
  9.     protected void Page_Load(object sender, EventArgs e)  
  10.     {  
  11.   
  12.     }  
  13. }  
public partial class MasterPage : System.Web.UI.MasterPage{    public int UserId {        get { return 342; }    }    public string UserName = "shenjk";    protected void Page_Load(object sender, EventArgs e)    {    }}

在內容頁擷取該值:

[csharp] view plaincopyprint?
  1. protected void Page_Load(object sender, EventArgs e)  
  2.     {  
  3.         PropertyInfo pl = this.Master.GetType().GetProperty("UserId");  
  4.         object o = pl.GetValue(this.Master, null); //o=342  
  5.           
  6.   
  7.         FieldInfo f = this.Master.GetType().GetField("UserName");  
  8.         object o1 = f.GetValue(this.Master);  //o1=shenjk  
  9.          
  10.     }  
protected void Page_Load(object sender, EventArgs e)    {        PropertyInfo pl = this.Master.GetType().GetProperty("UserId");        object o = pl.GetValue(this.Master, null); //o=342                FieldInfo f = this.Master.GetType().GetField("UserName");        object o1 = f.GetValue(this.Master);  //o1=shenjk           }

引用模板頁時,如何接收內容頁(感覺應該為模板頁)控制項的值

 

TextBox myemail = (TextBox)this.Page.Master.FindControl("show").FindControl("email");  string email = myemail.Text;

這2行代碼讓我找了2天,我一直認為是:

TextBox myemail = (TextBox)this.Page.FindControl("email");  string email = myemail.Text;

總是一個錯誤:未將對象引用設定到對象的執行個體。

如何取得和當前頁面聯絡的MasterPage中的變數

例如: 1. A.aspx用了一個叫MasterPage.master的母板頁。 MasterPage.master.cs裡定義了一個 int 型的變數 flag = 1 如何在A.aspx.cs裡讀出flag變數的值呢? 在 Page_Load 事件中添加如下代碼: ((MasterPage)Pa

例如:     1.  A.aspx用了一個叫MasterPage.master的母板頁。              MasterPage.master.cs裡定義了一個   int   型的變數   flag   =   1              如何在A.aspx.cs裡讀出flag變數的值呢?

    在 Page_Load 事件中添加如下代碼:

         ((MasterPage)Page.Master).flag  = 2;  或 int c=((MasterPage)Page.Master).flag;

        也可以 (this.Master as MasterPage).flag  = 2

2.下面的程式碼範例示範如何使用內容頁訪問前一個程式碼範例中的主版頁面上的公用屬性   SiteName。

     <%@   Page   Language="C#"   MasterPageFile="~/MasterPage.master"   Title="MasterPage   Example"   %>           <script   runat="server">          protected   void   Page_Load(object   sender,   EventArgs   e)          {              MasterExample   m   =   (MasterExample)Page.Master;              mylabel.Text   =   m.SiteName;          }      </script>           <asp:Content   ID="Content1"   ContentPlaceHolderID="ContentPlaceHolder1"   runat="Server">              Hello,   Master   Pages!              <asp:Label   runat="server"   Text="Label"   ID="mylabel"></asp:Label>      </asp:Content>  

3.擷取和設定主版頁面Master中的一個控制項的值

((Controls_wucTopBar)Master.FindControl("wucTopBar1")).strNavigaName = “電影頻道”;

4.可以這樣zu

在內容頁面裡加上:    <%@ MasterType VirtualPath="~/MasterPage33.master" %>    在後台代碼中     protected void Page_Load(object sender, EventArgs e)     {         Master.LabelText = "現在時間:" + System.DateTime.Now.ToShortTimeString();     }

C#中在內容頁擷取其模板頁中的變數,或者值

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.