如何从母版页更新内容页面?

时间:2011-01-12 14:21:05

标签: c# asp.net master-pages

菜单链接位于母版页中,相应的点击事件将写入母版页本身。我只有一个内容页面。数据以html格式保存在数据库中,并将在相应的菜单链接点击上呈现到内容页面。但问题是内容页面加载发生在母版页之前,因此内容页面是空白的。这是我的代码 -

public void GetLinkPage(Int32 linkId)//master page
{
    LinkContentEnitity linkContent = new LinkContentEnitity();
    linkContent = PageController.GetPageContent(linkId);              
}

linkContent包含HTML格式的内容页面。如何在内容页面上打印此值?

2 个答案:

答案 0 :(得分:3)

虽然它并不完全清楚,但听起来您说您的内容页面需要在主页的Page_Load事件中生成的自己的Load事件中的信息?

因此,要么将内容页面中调用GetPageLink()的代码移动到PreRender,要么在ContentPage中为Page_LoadComplete()添加一个事件处理程序(在页面上的所有子控件之后触发)加载)并调用GetPageLink()并从那里进行渲染,例如在内容页面中:

protected override void OnInit(EventArgs e)
{
    Page.LoadComplete += new EventHandler(Page_LoadComplete);
}
protected void Page_LoadComplete(object sender, EventArgs e) {
   // do stuff here, instead of OnLoad/Page_Load event
}

顺便说一下,这是事件顺序的有用参考。在处理嵌套控件(主/内容,用户控件等)时,您遇到的问题很容易进入,这有助于更好地理解事件顺序。

http://msdn.microsoft.com/en-us/library/dct97kc3.aspx

答案 1 :(得分:1)

一种方法可能就是这样......在您的内容页面上,添加一个公共方法来完成您需要完成的工作。在母版页中,将this.Page强制转换为您的页面类并调用该方法。