哪一个建议? 让我解释一下我想达到的目标!
我有很多用户使用的一个页面,每个用户都有如管理员,操作员,普通用户不同的作用。
当客户端打开网页我要显示一组控件(按钮),这取决于他们的角色。
管理员被允许做x和y,但普通用户是不允许做这些动作。
为了实现我想要做的,哪种方法是最好的?
我应该定义HTML所有控件然后切换Visible属性,或动态负载所需的控制?
可见=假我担心服务器的处理时间。 即使HTML标记不会发送到客户端为可见=虚假的控制,我知道控制仍然由ASP .NET加载,甚至处理,但他的HTML结果不写入到输出流。
对于动态加载控件,一个不方便的是,他们需要在回发重新初始化,也存在一些问题,事件和回传。
作为增益是不值得的复杂性或感知的积蓄,我不会做动态。 此外,如果你设置visible = false
,记住的视图状态的控制仍处于启用状态。 如果你所担心的来回数据和处理更大的视图状态,请确保您禁用视图状态的所有控件或包含它们父面板。 你将不得不保持在回发的状态,这样做虽然动态相同的不便。
此外,这样做非动态更容易保持到下一个家伙的代码工作。 当把什么样的代码是什么在布局明显,更容易比试图找出可视化。
创建控件动态确实没有得到你很多都只是视图状态的排斥,也许微不足道处理服务器端。 我想你会发现它甚至很难衡量多大的noticable差别,即使在之间,非视图状态的控制和动态有将它们加入到所需的开销负担。
最后,它更容易,为什么不先来最简单的路线,看看它是否是一个问题,那么做动态。 如果它确实成为一个问题,那么完善它在必要时。
.Visible = false
是这个一个相当合理的做法。 不要用这种方法,直到你证明的速度关心自己,通过分析,这是必需的。
如果你把不同的面板不同的角色和简单的显示/隐藏整个面板的控制
具有动态控制的另一个不便之处是,你必须写来处理他们大量的脆弱的代码,并与调试他们的头痛。 除非你有非常复杂的控件,这样做费时的事情,或者你实际上已经确定了一个性能问题,我会强烈建议无形的方法(和经常做)。 这是在行动KISS原则(不提“不预优化”的原则)。