如何在内容页面中引发其主页可以响应的事件?
例如,我有一个使用母版页的内容页面。母版页包含网站导航栏。根据我所在的页面,我想将一个事件发送到母版页,以更改导航栏中当前页面菜单项的CSS类。
我正在使用Visual Studio 2008和ASP.NET 3.5和C#。
谢谢!
答案 0 :(得分:2)
如果事件发生在所有内容页面上,请使用Kirtan的BasePage解决方案。如果基页不合适,那么在事件发生的每个页面中,在页面加载时添加此页面。
thisPage.Event += (Page.Master as YourMasterPageClass).YourCustomEventHandler
答案 1 :(得分:2)
编辑,根据你的要求你真的不需要一个事件,你只想在主人身上调用一个方法。在我的头顶,在主人:
public void ChangeCss(string className)
{
someObject.CssClass = className;
}
然后在你的页面中:
(this.Master as MyMasterType).ChangeCss("myclass");
答案 2 :(得分:0)
创建基页类。创建相应的代表&同样的事件。然后在母版页中,执行此操作 -
(Page as BasePage).Event += attach event handler here in the master page.
页面类必须是这样的 -
public class MyPage : BasePage { }
BasePage类必须是这样的 -
public class BasePage : System.Web.UI.Page { } //This will go in the App_Code folder.
答案 3 :(得分:0)
事件似乎不是表明这一点的最佳方式,因为您需要使用母版页来理解您的网页,您可能会在页面上显示标准属性,以指示其在导航中的“关键字”。
在您的母版页代码中:
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
var navigatable = this.Page as INavigatable;
if (navigatable != null)
this.Navigation.ActiveKey = navigatable .NavigationKey;
}
可导航界面:
public interface INavigatable
{
string NavigationKey { get; }
}
页面实例:
public class AboutPage : Page, INavigatable
{
public string NavigationKey
{
get { return "About"; }
}
}
答案 4 :(得分:0)
您可以使用名为EventBubbling的技术来引发事件。