【问题标题】:Calling a content page method from nested master pages从嵌套母版页调用内容页方法
【发布时间】:2017-03-21 06:23:27
【问题描述】:

我目前有两个母版页 M1 和 M2 以及几个内容页。

M2 有一个日历控件,我想在每次日历上的选择发生变化时调用一个内容页面函数。

这是我的母版页中的代码:

public partial class Master2 : BaseMasterPage
{
  public event EventHandler CalendarSelectionChanged;

  public void Calendar_OnSelectionChanged(object sender, EventArgs e)
  {
        if (CalendarSelectionChanged != null)
            CalendarSelectionChanged(this, EventArgs.Empty);
  }
}

这是内容页面 C1 中的代码:

protected void Page_PreInit(object sender, EventArgs e)
    {
        Master.CalendarSelectionChanged += new EventHandler(OnMainCalendarSelectionChanged_SubContent);
    }

 private void OnMainCalendarSelectionChanged_SubContent(object sender, EventArgs e)
    {
        DoSomething();
    }

但 CalendarSelectionChanged 始终为 null,因此不会调用该函数。

【问题讨论】:

  • 您使用的是哪个日历控件?
  • asp.net 日历控件,Calendar_OnSelectionChanged 方法正在触发并且很好,只有事件处理程序始终为空。
  • public void Calendar_OnSelectionChanged(object sender, EventArgs e) 被解雇了?
  • 是的,日历和一切都很好,只有自定义事件永远不会引发。 :(
  • 你试过找到控件了吗:Calendar cal = this.Master.FindControl("Calendar1"); cal.OnSelectionChanged += OnMainCalendarSelectionChanged_SubContent;

标签: c# asp.net


【解决方案1】:

经过一番认真的研究和摸索,我终于在母版页中制作了日历以触发内容页中的事件。

内容页面中的代码与问题中提到的相同。

第二个母版页(嵌套)中的代码更改为:

public partial class Master2 : BaseMasterPage
{
  public event EventHandler CalendarSelectionChanged;

  public void Calendar_OnSelectionChanged(object sender, EventArgs e)
  {
        OnCalendar_SelectionChanged_CustomEvent(e);

      ///.....
  }
 public virtual void OnCalendar_SelectionChanged_CustomEvent(EventArgs e)
    {
        if (Calendar_SelectionChanged_CustomEvent != null)
            Calendar_SelectionChanged_CustomEvent(this, EventArgs.Empty);
    }
}

在内容页面中添加虚拟引用路径:

<%@ MasterType VirtualPath="~/MasterPage.master" %> 

【讨论】:

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