C#中在内容页获取其模板页中的变量,或者值

在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  的方法,特意把它粘贴到了我这里,以方便自己查看:

获取母模版页的变量和属性值:
模板页:

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)
    {

    }
}

在内容页获取该值:
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();
    }


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值