WebForms中的选项卡

本文关键字:选项 WebForms | 更新日期: 2023-09-27 18:24:40

我试图在运行时创建一组选项卡,它们曾经正确工作过一段时间,但现在它们似乎只是显示了以前渲染的选项卡下所有选项卡的内容。虽然看起来很傻,但据我所知,就代码而言,自代码工作以来,没有任何变化,所以我有点困惑到底发生了什么…

为了这个例子的目的,我不会使用循环,尽管这似乎无关紧要,因为循环似乎不是问题所在。

<asp:Panel runat="server" ID="pnlTabs">
    <ul runat="server" id="ulSections" />
</asp:Panel>

我得出的结论是,我的代码一定有错,所以这里是C#:

HtmlGenericControl liTab = new HtmlGenericControl("li");                        
HtmlGenericControl anTab = new HtmlGenericControl("a");
anTab.Attributes.Add("href", "#Tab1");
anTab.InnerText = Tab1;
liTab.Controls.Add(anTab);
ulSections.Controls.Add(liTab);
var pnl = new Panel();
pnl.ID = Tab1;
pnlTabs.Controls.Add(pnl);

我把我的控制和什么没有放在"pnl"上。有人能告诉我我的错误是什么吗?

WebForms中的选项卡

//THIS ADDS THE <A> to the <LI>
liTab.Controls.Add(anTab);
//THIS ADDS THE <LI> to the <UL>
ulSections.Controls.Add(liTab);
//THIS CODE Appear to have nothing to do with anything.
var pnl = new Panel();
pnl.ID = Tab1;
pnlTabs.Controls.Add(pnl);

当你查看源代码时,你能确认HTML是否在HTML中呈现吗。

这个代码在你的代码后面的什么地方。。。在按钮中单击,在页面加载,在初始化?

我发现了问题所在,基本上是"anTab"的InnerText不能与"anTab"的href属性相同,因为这会导致混乱,并导致所有选项卡的内容只显示在第一个(选定的)选项卡中,而其余选项卡则不起作用。

例如,以下代码工作正常,因为"anTab"的InnerText是"Tab 1",href正在查找ID为"Tab1"的控件,即面板的ID。

HtmlGenericControl liTab = new HtmlGenericControl("li");                        
HtmlGenericControl anTab = new HtmlGenericControl("a");
anTab.Attributes.Add("href", "#Tab1");
anTab.InnerText = "Tab 1";
liTab.Controls.Add(anTab);
ulSections.Controls.Add(liTab);
var pnl = new Panel();
pnl.ID = "Tab1";
pnlTabs.Controls.Add(pnl);

下面我们可以看到,"anTab"的InnerText与href和我们希望用作选项卡的面板的ID相同,这导致了混乱,因为href现在假设您希望"选项卡单击"指向自己,而不是实际的面板。

HtmlGenericControl liTab = new HtmlGenericControl("li");                        
HtmlGenericControl anTab = new HtmlGenericControl("a");
anTab.Attributes.Add("href", "#Tab1");
anTab.InnerText = "Tab1";
liTab.Controls.Add(anTab);
ulSections.Controls.Add(liTab);
var pnl = new Panel();
pnl.ID = "Tab1";
pnlTabs.Controls.Add(pnl);