2010-06-24 72 views
9

我在过去的两年中一直使用ASP.NET(C#)。我学到了很多,但仍然有很多东西要学:)使用Web用户控件而不是Web窗体

我用MasterPages,“Web用户控件”的东西像头,导航,页脚等

一两件事,我从来没有真正理解是为您的内容和逻辑使用“Web用户控制”的做法;

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

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

我记得当我尝试过这种方法之前,并最终有像Gridview的控件有可怕的viewstate问题......一旦我把所有的逻辑,并将其放置到一个.aspx页面一切工作正常。

我现在意识到,也许我需要在GridView添加到视图状态集合......但这只是巩固了我的困难转换为理解为什么使用这种方法 - 定的视图状态的问题。

我完全理解'网页用户控件'与头部,菜单,页脚等相关的优点......任何涉及重复的地方,但我见过的项目都有相当具体的页面/控件 - 在换句话说,它不太可能在其他地方重用 - aspx页面只包含一个带有内容和逻辑的控件(.ascx),它只会在该页面上使用,而不会在其他地方使用。

忽略“代码重用”,这是否方式提供什么好处?

回答

2

我觉得你PageA.aspx的例子 - > PageA.ascx实际上是一个突出的Web用户控件的好处了一个坏榜样。从这些“页面”控件示例中退一步,并考虑Web用户控件的主要用途。它们用于在独立块中封装UI和功能。

我认为最大的好处在于,如果我开发了一些类似评论表单的网页用户控件,并将其部署在我的网站页面中,我将在解决方案中更新每个项目它存在的页面。

另一个不太明显的好处是很多的内容管理系统,如一把umbraco使用Web用户控件作为插件。通过这种方式,您可以开发最终用户/编辑器的插件,以便按照他们认为合适的方式选择并放置到页面内容中。

+0

Brian,在Web控件中放置类似评论表单的东西总是很有意义,我将所有这样的控件放置在控件中......也许这些项目我已经看过整个页面嵌套在一个Web控件中是不是做事情的方式? ....如果Home.aspx包含多个控件,如“HomepageSlideshow.ascx”,“TwitterFeed.ascx”,这将更有意义。 – Dal 2010-06-24 13:10:31

+0

@Dal,正好。虽然技术上不同的页面和网页用户控件基本上表现得非常非常类似,并且需要有一个真正的目的,以便您描述的方法已被采用。没有进一步的细节,没有明显的好处 – 2010-06-24 13:14:09

4

用户控件的Web表单内使用......他们不是在更换使用


编辑:

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

+0

我所知道的是 - 我的观点是,你都会有这样的页面Home.aspx和所有包含一个名为Home.ascx自定义控件... Home.aspx几乎是像一个包装......我我试图理解为什么这种方法特别适用于不需要代码重用的情况。 – Dal 2010-06-24 13:08:37

+1

在那个特定的例子中,使用Web用户控件实际上没有任何实际益处。这听起来似乎Masterpages会更合适。 – 2010-06-24 13:12:48

+0

@Ed B - 这正是我的窘境;) – Dal 2010-06-24 13:21:30