我的一位朋友写了一个网站,里面有很多用户控件和页面。
页面包含许多标签,隐藏值和用户控件。根据用户请求,他启用并禁用这些控件。在每个webform页面加载中,他循环遍历Request.form.allkeys
并比较每个控件。基于该比较,他正在启用和禁用webform上的控件。
我不知道这是不是一个好的编程习惯。
有人能指出我正确的方向吗?
答案 0 :(得分:4)
我曾经继承过这样的网站。写它的人一定是受虐狂。
设计网站是一种可怕的方式。显示/隐藏事物的时间,何时处理来自哪些字段的输入的复杂性太多了。维护变得不可能,因为一个微小的修改可能会产生可怕的后果。
更好的方法是将常见行为隔离到单个页面中。如果该页面很复杂,则将该页面的核心部分转换为用户控件。将UI分解为逻辑部分并将它们拼凑在一起。
您的网页代码应该非常简单。隐藏/显示特定字段的逻辑是业务逻辑,应尽可能明确地在代码中表示。
答案 1 :(得分:0)
我不是一个webdev,但我知道在桌面应用程序世界中这将被认为是非常糟糕的做法,我真的怀疑它在网络世界中有很大不同。
考虑在特定操作发生时仅启用和禁用相关控件,可能使用更多MVC(或者现在是MVVM?)方法。您朋友的应用程序逻辑与表示逻辑紧密耦合,因此如果需要更改,则整个系统可能会产生连锁反应。
答案 2 :(得分:0)
我从未听说过在使用Web控件时解析表单的值。当我做传统的ASP时,那将是我的毒药,但不是网页控件。
至于将大量功能包装到单个页面中,这可能是一个坏主意。拥有用户控件对于对相关UI功能的块进行分组,甚至隐藏一个部分是有意义的,但对于拉入和拉出整个“页面”而言并非如此。只是有不同的页面。
此外,如果在同一页面中混合使用如此多功能的原因是使用相关代码,则将相关代码移动到可供所有代码隐藏使用的库中。回到用户控件,将它们用于重复的UI元素,可以在任何页面中使用。