当我使用代码在使用分隔符或cs文件中隐藏aspx页面中的某些控件时,我正在考虑性能。
例如 如果我有一个面板并且我希望它在某些条件下显示,那么我可以通过两种方式实现这一点
1:在aspx文件中使用代码,类似这样的
<% if(isAllowed) { %>
<asp:Panel ...></asp:Panel>
<% } %>
2:在代码文件中,类似这样的
<asp:Panel ID="pnlMyPanel" Visible="false"></asp:Panel>
在cs文件中
if(isAllowed)
pnlMyPanel.Visible=true;
在我看来,第一种方式应该是好的,因为它根本不会在页面中创建任何Panel。 我在这里纠正吗?
请指导我哪种方法更可取
答案 0 :(得分:0)
老实说,我不知道哪个更快,但我怀疑这种差异会对你的应用程序的性能产生任何明显的影响。
答案 1 :(得分:0)
如果按性能表示由页面生成的最终HTML的大小,则在这两种情况下都不会呈现HTML代码,因此不会影响页面权重。为了可维护性,我建议将其放在cs中,这样下一个人更容易遵循逻辑流程。
答案 2 :(得分:0)
前一段时间,我开始沉迷于创建只加载他们所需内容的表单,例如:使用Page.LoadControl()
加载子控件。我逐渐意识到,在事件生命周期和参考可用性方面所产生的麻烦并非不可克服,但是太麻烦了,以至于我花费的时间远远超过了我想要处理它的时间。
所以我不再这样做了。这很好。
我学到了一个宝贵的教训:除非您有性能问题,否则不要担心。
计算能力很便宜,大多数情况下的大多数网站都不会遇到性能问题。因此,编写易于理解和维护的代码,然后担心优化何时(更有可能,如果)性能成为问题。
所以要回答你的问题,无论哪个更快,请在cs中执行此操作:
pnlMyPanel.Visible = isAllowed;
顺便说一下,在这个和使用“if ...”构造之间有一个重要的区别,只有当你的条件成立时才能将它设置为可见。
由于默认情况下启用了ViewSate,因此如果将面板设置为可见,则无论isAllowed
条件是否为假,它都将在后续回发中保持可见状态。所以我建议养成总是分配可见性以形成有条件可见的元素的习惯。这也意味着您永远不必担心在标记中设置Visible和EnableViewState属性。