我在Site.Master页面上创建了一个控件,该控件从外部XML文件中提取数据以生成其他页面内容。此控件依赖于知道加载了哪个内容页面,以便从XML文件中选择正确的内容。控件的方法是从Site.Master中的Page_Load事件处理程序启动的。
我遇到的问题是我不知道如何确定(从Site.Master页面)加载了哪个内容页面。我尝试在每个内容页面上使用隐藏字段,但因为它们具有相同的效果,所以它会导致_Default中的冲突。我可以给他们不同的名字,但是现在我看不到一种处理它的方法,没有一些丑陋的逻辑块。如果我找不到一个好的解决方案(我肯定必须存在),我将不得不满足于从每个内容页面的Page_Load处理程序调用控件。我想这不是一个糟糕的解决方案,但我尽量避免代码重复。
答案 0 :(得分:2)
您始终可以通过HttpContext
获取对当前页面的引用(即使在静态上下文中):
public partial class SiteMaster : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
Page p = HttpContext.Current.CurrentHandler as Page;
}
}