標籤:
在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?
- 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)
- {
-
- }
- }
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?
- 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
-
- }
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#中在內容頁擷取其模板頁中的變數,或者值