【问题标题】:Access Master page variables in child page in ASP.NET在 ASP.NET 的子页面中访问母版页变量
【发布时间】:2011-11-28 23:52:02
【问题描述】:

这是我的母版页文件。我需要将strNameidurlstarttime 等传递到我的子页面。我知道我们可以在子页面中编写此逻辑,但是,我只想在子页面中访问此母版页变量。

我无法在每个 set/get 方法中编写此逻辑。在子页面中访问这些变量时,我得到空值。基本上这里是子页面加载调用后的主页面加载调用:

  1. 主页面名称:MyMasterPage

    公共部分类 MyMasterPage: MasterPage { 公共字符串 strName = string.Empty; 公共字符串 id=string.Empty; 公共字符串 url = string.Empty; 公共字符串 startTime = string.Empty; 公共字符串 endTime = string.Empty; 公共字符串 remoteUrl = string.empty;

      public void Page_Load(object sender, EventArgs e)
      {
    
         DataTable dtEventTable = DataAccessManager.GetEventInfo(Connection);
    
         if (dtEventTable.Rows.Count > 0)
         {
                strName = dtEventTable.Rows[0]["NAME"].ToString(); 
                id = dtEventTable.Rows[0]["ID"].ToString(); 
                url= dtEventTable.Rows[0]["URL"].ToString(); 
                starttime = dtEventTable.Rows[0]["starttime"].ToString(); 
                endtime = dtEventTable.Rows[0]["endtime"].ToString(); 
                remotelive = dtEventTable.Rows[0]["remotelive"].ToString(); 
                // assume that strName = "TCG",id=5, startime=20111001 etc.
         }
     }
    

    }

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    您可以使用 Session[] 对象从另一个页面访问变量。

    【讨论】:

    【解决方案2】:
    string name = ((MyMasterPage)this.Master).strName;
    

    阅读Working with ASP.NET Master Pages Programmatically

    【讨论】:

    • 我使用了上面的方法,这里我在 name 变量中得到空值。我调试代码。第一个子 page_load 调用,然后是母版页加载调用。
    【解决方案3】:

    由 Ramesh T 在 https://forums.asp.net/post/5557778.aspx 上发现的

    你最好通过添加来创建对你的母版页的强类型引用 你的内容(aspx页面)中的@MasterType指令如下所示

    <%@ MasterType  virtualPath="~/MasterPage1.master"%>
    

    并在您的 aspx 页面或后面的代码 (aspx.cs) 中访问其成员 下面

    var test1Text = Master.test1;
    

    这样你就不需要投射了。

    【讨论】:

      【解决方案4】:

      正如 Muhammad Hasan 和 Pete 建议的那样,这会奏效:

      string name = ((MyMasterPage)this.Master).strName; 
      

      或者:

      <%@ MasterType  virtualPath="~/MasterPage1.master"%>
      var test1Text = Master.test1; 
      

      但是,考虑到母版页的 Page_Load 事件中的代码是在您的内容页中的 Page_Load 之后执行的。

      因此,如果您在母版页中设置变量的值,然后尝试进入内容页,您将获得空值。

      您将在此处找到更多信息:https://msdn.microsoft.com/en-us/library/dct97kc3.aspx

      【讨论】:

      • 所以最好把代码移到母版页初始化事件中?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-08
      • 2021-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-12
      相关资源
      最近更新 更多