使用Web用户控件而不是Web窗体

时间:2010-06-24 12:51:58

标签: asp.net controls

过去两年我一直在使用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),它只会在该页面上使用,而不是其他地方。

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

2 个答案:

答案 0 :(得分:5)

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


编辑:

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

答案 1 :(得分:2)

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

我认为最大的好处是知道如果我开发一个类似评论表单的内容作为Web用户控件并在我的网站页面中部署它我在解决方案中有一个要更新的项目将更新每个页面它存在于。

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