如果是aspx文件中的语句
我有一些基本上看起来像这样的代码:
This markup should not be output if Something==true.
取决于Something
,其中一个是隐藏的,这很好。 但是如果我在用户控件中设置断点,我会注意到它被加载了两次(对于上面的每个控件都加载了一次)并且它的所有逻辑都运行了两次。 我当然可以使用占位符或多视图来控制它,但同样的事情似乎适用 – OnLoad
/ Page_Load
等对于页面上实际存在的每个控件运行一次。
编辑:我显示/隐藏这个的原因是因为我需要在控件周围包含一些标记,如果Something == true
。 我可以在控件之前和之后的if-else中包装“unique markup”本身,但这对于真正应该像我上面想象的那样简单的东西来说似乎很脏。 在这两种情况下,用户控件本身应该完全相同,对不起它具有的混乱属性。
它只是我,还是这只是一个非常不直观的界面? 并且只要它在页面上,它实际上是否可以不加载/执行用户控件?
由于页面上有两个控件,因此它们都会呈现它们。 您创建的if-check仅确定它是否包含在输出中。 防止这种情况的最简单方法是更改代码,如下所示:
编辑 :回答在原帖中编辑:
<% if(Something) { %> This markup should not be output if Something==true. <% } else { %> <% } %> MyUserControl ctrl = (MyUserControl)LoadControl("/pathtousercontrol.ascx") if (something){ phItemInDiv.Controls.Add(ctrl); } else{ phItemOutsideDiv.Controls.Add(ctrl); }
这样,如果Something
为true,您将只发出(并加载)用户控件
在我看来,最好的方法是在ASPX中声明一次用户控件。
在后面的代码中,在PageLoad上,应用您认为合适的逻辑:
if(something) MyUserControl.SomeSettings = ...
如果在年表中存在问题,请在PreLoad中执行上述逻辑,因为它将在页面的页面加载及其所有相关用户控件之前触发。
编辑:
您可以使用Enabled = false在用户控件上放置两个不同的ID。 在Page_load中,根据您需要的逻辑将Enabled设置为其中一个。
上述就是C#学习教程:如果是aspx文件中的语句分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1006832.html