【发布时间】:2010-02-17 20:22:39
【问题描述】:
我不是初学者,但是我越想这个问题,我就越为找不到优雅的解决方案而烦恼。
在编写一个 C# .NET 网站时,我意识到我需要在不同的页面中使用几个组件,它们的功能或多或少是相同的,我想找到一种方法来编写一次然后重用它们。
例如,我在多个页面中使用的搜索框或多个 GridView。 这个“组件”由几个 ASPX 控件、方法,可能还有一些 JavaScript 等组成。 它们太复杂而无法复制,太具体而无法创建为控件。
您认为编写重用此类元素的最佳方法应该是什么。 这些是我迄今为止找到的解决方案,每个都有自己的缺点:
iframe - 事实上,它的所有问题对我来说都很好(对于搜索框)。我写了一个包含所有搜索行为的 aspx/cs 页面(这很复杂)——然后在我想要这个搜索框的每个页面上,我添加了一个 iframe。
母版页 - 我发现这一页非常棘手。我发现您可以编写嵌套母版页,但我不知道这对我有何帮助。母版页方法 - 将子页设置为第一页(调用其父页)。但在我的情况下,我的主页有他的子组件。
3.UpdatePanel - 我可以使用 UpdatePanel - 并编写一个共享函数,用所需的组件和代码填充它。好吧,这可能行得通,但是代码很难维护(您需要使用 C# 手动编写所有组件)
有什么想法吗?我是否错过了任何微不足道的解决方案。
【问题讨论】:
-
@Ranch,您已经提出了 7 个问题,但只接受了 1 个问题。花 0.2 秒并感谢人们为回答您的问题所付出的努力是正确的礼仪。否则你会发现自己被忽视了。只是说...
-
@Sky Sanders,感谢您的评论。我会复习我的问题——从我过去的经验中补充。至于 ascx,您认为这对于只使用一次的组件来说是一个合适的解决方案吗?我正在编写的页面已经变得非常大,我想把它分成几个组件——只是为了方便将来的维护和代码的可读性。
-
@epitka,伙计,这不是“第一!”事情,这更像是一个提醒,使用适当的术语可能会更有帮助。 .ascx 是一个任意文件扩展名,我们大多数人都知道它表示用户控件,但从这篇文章的上下文中可以明显看出,使用标准术语是合适的。
-
@Ranch,UserControls 在这两个方面都能为您服务。对于重用,当然您只需要为多种用途维护一个控件。为了获得良好的 OOP(与 WebForm 一样好,无论如何),它鼓励关注点的封装和分离,并且作为一个令人愉快的副作用,您可以在 UI 中获得更少混乱的代码。即使只使用一次,也可以封装复杂的逻辑。