asp.net - ASP .NET : Dynamic load controls vs Visible = true

标签 asp.net user-controls

推荐哪一个?让我解释一下我要实现的目标!
我有一个页面供许多用户使用,每个用户都有不同的角色,例如管理员,运算符(operator),普通用户。
当客户打开该页面时,我要显示一组取决于其角色的控件(按钮)。
管理员可以执行x和y,但是普通用户不能执行这些操作。

为了实现我想做的,哪种方法是最好的?
我应该在HTML中定义所有控件然后切换Visible属性还是动态加载所需的控件?

对于Visible = false,我担心服务器处理时间。即使未将Visible = false控件的HTML标记发送给客户端,我也知道该控件仍由ASP .NET加载,甚至可以处理,但他的HTML结果不会写入输出流。

对于动态加载的控件,一个不便之处是它们需要在Postback上重新初始化,并且事件和Postback也存在一些问题。

最佳答案

我不会动态地执行此操作,因为获得的 yield 不值得复杂性或节省的成本。另外,如果您设置visible = false,请记住,控件的viewstate仍然处于启用状态。如果您担心来回数据和处理较大的viewstate,请确保对所有控件或包含它们的父面板禁用viewstate。但是,在动态维护时,在回发时保持其状态同样会带来不便。

而且,以非动态方式进行操作对于维护下一个使用该代码的人来说要容易得多。与试图弄清楚什么代码放置在何处时相比,布局是显而易见的,并且更易于可视化。

动态创建控件实际上不会给您带来任何好处,除了排除viewstate以及可能忽略不计的处理服务器端之外。我认为您会发现,即使在非 View 状态控件与必须根据需要动态添加它们的开销之间的负载下,也很难测量出明显的差异。

最后,不动态进行操作会更容易,所以为什么不先走最简单的路线,看看是否有问题。如果确实成为问题,则在必要时对其进行优化。

关于asp.net - ASP .NET : Dynamic load controls vs Visible = true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1304032/

相关文章:

c# - 动态内容的最佳实践

.net - 使 WrapPanel 尊重他 parent 的宽度

winforms - 如何防止 TabControl 中 UserControl 的延迟加载?

c# - 身份验证失败时重定向到母版页中的页面不起作用

asp.net - Paypal IPN 集成问题

asp.net - 有关 Azure 文本分析中情绪分析频率的最佳实践

c# - WPF 自由格式边框控件

asp.net - 为 ASP.NET 应用程序绘制新数据库?

wpf - 如何从用户控件触发自定义事件?

c# - 在 UserControl 内的 asp.net 标签上使用 AssociatedControlID