【发布时间】:2012-04-03 15:54:10
【问题描述】:
我想从用户控件更改母版页中存在的控件值,场景如下:
在用户控件加载方法中,我使用名为“catID”的查询字符串参数来获取类别实体,然后我想将类别标题设置为位于母版页中的标题标签(类别标题)的值。
我试图更改用户控件页面加载控件中的标题,但母版页面加载方法执行得更早。
有什么想法吗?
【问题讨论】:
-
这绝对是一种可怕的做法。完全违反了“关注点分离”原则等等。用户控件不应该改变母版页,页面应该。此外,用户控件应该不知道它的放置位置。你拥有它的方式就是紧耦合。
-
@Mrchief:+1 但 UserControls 的目的并不总是分离和可重用性,有时是封装和简化。在这种情况下,用户控件本身采用页面作为控制器的角色,页面仅控制包含用户控件的可见性。考虑 f.e. lazy-loading TabPanels of a TabContainer 的场景,其中所有面板都包含一个具有页面全部功能的用户控件。
-
@Tim:没错,这里的用户控件采用了页面的角色。我的项目中只有一个aspx,它根据查询参数控制用户控件的可见性。