【发布时间】:2015-01-03 11:43:57
【问题描述】:
您好,在此先感谢您。
我有一个问题,我在页面顶部显示了一些链接(它们不是面包屑),并且在不同的情况下,我需要打开/关闭一些链接,并为用户所在的页面突出显示该链接。当我最初将页面放在一起时,对显示链接的函数的调用在 Page_Init 中,就像在母版页中一样:
protected new void Page_Init(object sender, EventArgs e)
{
SetTabs(session);
}
protected void SetTabs(session)
{
makeTab.add(session.param, session.param);
makeTab.generate();
}
protected void add(param, param)
{
Tabs.add(new tab() { link = param, name = param });
}
protected void generate()
{
foreach(tab t in Tabs)
{
liTab.Text = string.Format("<li><a href=\"{2}\">{1}</a>", t.name, t.link);
}
}
创建的链接是内联显示的项目的无序列表。
我有一个单独的方法,它应用样式更改来突出显示与用户所在页面相关联的链接,该链接是从页面本身的 Page_Load 调用的:
protected void Page_Load(object sender, EventArgs e)
{
Master.makeTabBlue(nameOfTab);
}
但是,为了使隐藏的选项卡正确重新出现,我必须将 SetTabs(session) 移动到 Page_PreRender 函数,以便在保存页面后调用它们,当会话更新但现在我已经完成了使选项卡变为蓝色的功能不再有效。我已经阅读了有关页面生命周期的信息,并且我认为在 makeTabBlue 中呈现的 CSS 仅在 Page_PreInit 或 Page_Init 周期内有效,但是如果我将 makeTabBlue 移动到其中任何一个周期,则页面开始抛出控件可以的其他错误'找不到这是有道理的,因为直到 PreRender 才会调用它们。在保存函数中调用它也没有效果。我应该从哪里调用 makeTabBlue 才能正常工作?
更新:
在这种特殊情况下,我的问题的解决方案是将 SetTabs 保留在 Page_Init 中,将 makeTabBlue 保留在 Page_Load 中,我向 LI 添加了一个独特的类,我正在隐藏,通过 javascript 通过将值存储在中来显示链接一个隐藏字段并在 js 加载时检查该字段。
【问题讨论】: