【问题标题】:Advantages and disadvantages of usercontrol in asp.netasp.net中usercontrol的优缺点
【发布时间】:2011-12-16 22:01:08
【问题描述】:

谁能告诉我是否应该在我的项目中尽可能多地使用用户控件? Ff 那么为什么,如果不是,为什么不呢?

【问题讨论】:

    标签: asp.net user-controls


    【解决方案1】:

    这是一个有趣的问题;但是这样想。

    您刚刚编写了一个表格,列出了所有用户。您在网站的“列出用户”页面上显示此内容。

    在“查找用户”页面上,您可能希望能够显示用户列表。您是否像以前一样重写相同的 HTML、代码、javascript、CSS?或者您是否重复使用该控件,这次添加了按用户名或其他属性进行过滤的功能?

    本质上,用户控件用于打包您网站的可重复使用部分。无需在各处重复相同的代码,您可以将其打包到用户控件中,然后只需添加适当的标记即可将其添加到您想要的任何页面。

    此外,您刚刚在项目中创建了一个控件来负责处理某些功能 - 它的所有逻辑都在一个位置并与其他代码分开。这也是一个重要的概念,因为它可以防止所有代码混在一起。在用户示例中,您可以通过界面与用户列表进行交互,而不是将其与可能执行不同操作的其他代码混合。这称为SRP,可能是一件好事。

    作为一个实际示例,我们有一个显示我们产品列表的控件。我们可以在 Find 屏幕、Admin 屏幕、“Products Like this”屏幕和“Products you have selected”屏幕上重复使用相同的控件。这段代码包含很多逻辑,都在一个地方,所以维护方便,复用也很简单。

    用户控件可能是一件非常好的事情。因此,当您觉得可以打包一组现有控件、HTML 等时,您应该使用它们。这使它们可重用,并且更易于维护。

    还有自定义控件的概念 - 这些通常是现有控件的重新实现 - 例如,您可能有一个 ExtendedTextBox,它可以在有人键入文本时验证文本。

    您可以阅读更多about both kinds of controls here

    【讨论】:

    • 我喜欢的另一个例子是当我将标签、文本框、验证器和周围的 html 组合到一个用户控件中时,然后我在编辑屏幕中使用它,如下所示:。将此行与原始的
    • 我认为这应该是一个答案,因为它是一个很好的、实用的演示,即使是一个简单的用例也可以从用户控制和重用中受益。在你的例子中,我实现了类似的东西;一个从 Control 继承的自定义 EmailTextBox,尽管我将它(与其他一些)放在一个程序集中以在我们所有项目之间共享 - 一个自定义控件。
    • 您的回答说明了一切,这就是为什么它有我的 +1。我认为我的例子更像是一个复合材料。我也使用继承。例如,我继承 FormView 并确定 DefaultMode 是用于编辑还是用于插入,具体取决于 QueryString [“id”] 之类的某些值,然后我决定编辑/插入失败/成功时会发生什么,例如显示一条消息(制作可见一些文字或只是在某处重定向,可能在列表页面上)。就像你说的那样,如果相同的代码或标记在整个页面上重复,那么它应该被移动到用户控件中或扩展现有的控件。
    【解决方案2】:

    用户控件之所以好的原因与子例程/函数/方法好的原因相同:代码(和标记)重用。

    与子例程一样,如果控件执行诸如修改全局状态、进行大量 DB 或其他并非总是需要的脱机调用、引入不可避免的同步阻塞等操作,则控件可能会成为问题。它们还可以添加不必要的如果它们从不被重复使用,就会增加复杂性。

    【讨论】:

      【解决方案3】:

      我会尽可能使用 VS IDE Toolbox 提供的控件。如果环境提供的东西没有完全按照我的意愿去做,我只会滚动我自己的控制。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-19
        • 1970-01-01
        • 2013-09-27
        • 1970-01-01
        • 2014-02-08
        • 1970-01-01
        • 2015-05-01
        • 2013-04-07
        相关资源
        最近更新 更多