【问题标题】:Access Master Page Control访问母版页控制
【发布时间】:2009-05-19 05:11:03
【问题描述】:

我正在使用母版页中的用户控件。我需要访问 UserControl 中的母版页控件。我需要你的建议。

场景是母版页中存在一个标签。根据用户控件中的选择,我需要修改母版页标签。 UserControl 存在于母版页本身而不是内容占位符中。

【问题讨论】:

    标签: master-pages master


    【解决方案1】:

    在母版页中创建一个公共方法(或公共属性)以修改您的标签,并在 UserControl 中通过Page.master 对象调用它:

    YourMasterPageClass master = Page.master as YourMasterPageClass;
    if(master != null)
    {
        master.YourEditMethod("hello");
    }
    

    【讨论】:

      【解决方案2】:

      快速简便的方法是在控件中创建事件并在 master 中处理,如下所示:

      //Control aspx
      <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="TestControl.ascx.cs" 
        Inherits="TestControl" %>
      
      <div style="width:300px;border:2px groove blue;">
          <asp:Button ID="btn1" runat="server" Text="One" onclick="btn_Click" />
          <asp:Button ID="btn2" runat="server" Text="Two" onclick="btn_Click" />
          <asp:Button ID="btn3" runat="server" Text="Three" onclick="btn_Click" />
          <asp:Button ID="btn4" runat="server" Text="Four" onclick="btn_Click" />
      </div>    
      
      //Control C#
      
      namespace Controls
      {
          public partial class TestControl : System.Web.UI.UserControl
          {
              public delegate void UserChoice(TestEventArgs e);
              public event UserChoice OnUserChoice;
      
              protected void btn_Click(object sender, EventArgs e)
              {
                  if (OnUserChoice != null)
                      OnUserChoice(new TestEventArgs(((Button)sender).Text));
              }
          }
      
          public class TestEventArgs : EventArgs
          {
              private string _value;
      
              public TestEventArgs(string str)
              {
                  _value = str;
              }
              public string Message
              {
                  get { return _value; }
              }
          }
      }
      
      
      //MasterPage Code
      
      protected void Page_Load(object sender, EventArgs e)
      {
           test1.OnUserChoice += new 
              Controls.TestControl.UserChoice(test1_OnUserChoice);
      }
      
      void test1_OnUserChoice(ROMS.Intranet.Controls.TestEventArgs e)
      {
          MasterLabel.Text = e.Message;
      }
      

      MasterLabel 是母版页中标签的名称。

      test1 是母版页中的控件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多