我想根据某些特定条件为页面添加更多控件。这些控件不需要任何ViewState或绑定数据,它就像静态链接一样简单。
我想知道在哪里可以编写代码:在OnLoad
或OnInit
方法内?为什么?如果我将它放在OnLoad
内,我应该在任何初始化代码之前添加以下行:if (IsPostBack) return;
吗?
答案 0 :(得分:6)
您可以在OnInit方法或OnLoad中添加控件,无论它们是否需要视图状态。 (原因是因为只要向控件添加控件,控件就会加载其视图状态,即使您在LoadViewState阶段之后添加它...)
我应该在任何初始化代码之前添加以下行:
if (IsPostBack) return;
吗?
没有。必须将动态添加的控件添加到每个页面加载的控件层次结构中,而不仅仅是初始加载控件层次结构。
如果您打算使用动态添加的Web控件,我强烈建议您阅读这两篇文章:
对于基于某些外部条件(例如数据库中的配置)动态加载控件的工作端到端示例,请参阅Creating a Dynamic Data-Driven User Interface。
快乐编程!
答案 1 :(得分:1)
我建议只是静态地将控件添加到页面,并在满足条件时将其可见性切换为“True”。当它们不可见时,它们不会向页面呈现任何内容,这将为您节省很多麻烦,特别是因为它听起来像是动态控件的新手。
答案 2 :(得分:0)
我不确定我是否完全理解,但我个人会在页面上放置一个asp:Literal(如果你需要在不同的地方放几个),然后在OnLoad事件中创建你需要的HTML。
如果你这样做,那么你放入该文字的html将保存在viewstate中,因此你不会在回发时重做它。
答案 3 :(得分:0)