【问题标题】:Using Web User Controls instead of Web Forms使用 Web 用户控件而不是 Web 表单
【发布时间】:2010-06-24 12:51:57
【问题描述】:

过去两年我一直在使用 ASP.NET (C#)。我学到了很多,但还有很多东西要学:)

我在页眉、导航、页脚等方面使用了 MasterPages、“Web 用户控件”。

我从未真正理解的一件事是使用“Web 用户控件”来处理您的内容和逻辑的做法;

Home.aspx ------ Home.ascx
AboutUs.aspx ----- AboutUs.ascx
Ordering.aspx ---- Ordering.acsx

在过去的几个月里,我一直在处理一些使用这种结构的项目。我知道这实际上是一种常见做法,但我并不真正了解全部好处。

我记得我之前尝试过这种方法,结果在使用像 Gridview 这样的控件时遇到了可怕的视图状态问题......一旦我把所有的逻辑都拿出来放到一个 .aspx 页面中,一切正常。

我现在意识到,也许我需要将 Gridview 添加到 viewstate 集合中......但这只会加剧我理解为什么使用这种方法的困难 - 考虑到 viewstate 问题。

我完全理解“Web 用户控件”相对于页眉、菜单、页脚等内容的优势......涉及重复的任何地方,但我见过的项目具有非常具体的页面/控件 - 在其他单词它不太可能在其他任何地方重用 - aspx 页面只包含一个包含内容和逻辑的控件 (.ascx),它只会在该页面上使用,不会在其他任何地方使用。

忽略“代码重用”,这种方法还有哪些其他好处?

【问题讨论】:

    标签: asp.net controls


    【解决方案1】:

    用户控件在 Web 表单中使用......它们不用于替代


    编辑:

    在这种情况下,我认为使用该方法没有任何好处(除了重用)。它实际上可能有更多开销,因为页面循环事件必须从页面传递到控件。

    【讨论】:

    • 我知道 - 我的意思是您将拥有诸如 Home.aspx 之类的页面,其中包含的所有内容都是一个名为 Home.ascx 的自定义控件 ... Home.aspx 几乎就像一个包装器...我试图理解为什么要使用这种方法,尤其是在不需要代码重用的情况下。
    • 在该特定示例中,使用 Web 用户控件实际上并没有任何实际好处。听起来 Masterpages 会更合适。
    • @Ed B - 这正是我的困境;)
    【解决方案2】:

    我认为您的 PageA.aspx -> PageA.ascx 示例实际上是突出 Web 用户控件优势的一个坏示例。从这些“页面”控件示例中退后一步,想想 Web 用户控件的主要用途。它们的目的是将 UI 和功能封装在一个离散的块中。

    在我看来,最大的好处是知道如果我开发了类似 cmets 表单的东西作为 Web 用户控件并将其部署到我的网站页面中,我将在解决方案中更新一个项目,该项目将更新每个页面它存在于。

    另一个不太明显的好处是,许多内容管理系统(例如 Umbraco)使用 Web 用户控件作为插件。这样您就可以为最终用户/编辑器开发插件,以根据他们认为合适的方式选择并放入页面内容。

    【讨论】:

    • Brian,在 Web 控件中放置评论表单之类的东西是完全有意义的,我完全赞成在控件中放置这样的小部件......也许这些项目我已经看到了整个页面的位置毕竟嵌套在 Web 控件中不是做事的方法吗? .... 如果 Home.aspx 包含多个控件,例如“HomepageSlideshow.ascx”、“TwitterFeed.ascx”,这将更有意义。
    • @Dal,没错。尽管在技术上不同,页面和 Web 用户控件的行为本质上非常相似,并且需要有一个真正的目的才能采用您所描述的方法。没有更多细节,就没有明显的好处
    猜你喜欢
    • 2012-10-28
    • 1970-01-01
    • 2016-09-13
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多