我正在处理的母版页分裂成各种内容占位符,如往常一样。在许多页面上,我使用多视图根据不同的查看模式(查看/编辑/添加)来显示和隐藏内容。这意味着每个母版页内容占位符都有一个多视图...
当我需要切换查看模式时,麻烦就来了,比如从“查看”切换到“编辑”。我需要改变页面上的每个多视图来显示相应的信息。所以假设有4个不同的内容占位符,有3个不同的视图模式-那就是12行相当繁琐的代码。
我想知道是否有一种方法可以同步或链接页面上的所有多视图,这样当一个视图发生变化时,它们都会相应地发生变化?就像通过某种主控多视图?
我已经考虑过使用View的Activate事件,但这仍然意味着首先要做大量的连接,这是我试图避免的。
C#eers!
发布于 2009-03-24 14:31:55
要做到这一点,最好的方法是在母版页上有一个事件,单个多视图向该事件添加一个事件处理程序。
这应该不需要太多代码,您可以通过为所有实例创建一个继承自MultiView的基类来避免重复这些代码。
发布于 2009-03-24 22:48:56
另一个更自动的选项(但性能不如RobW的选项)是递归地查看任何多视图的页面控件。类似于:
ApplyToControlsRecursive(Page, c =>
{
var multi = c as System.Web.UI.WebControls.MultiView;
if (multi != null)
multi.ActiveViewIndex = 1;
});
void ApplyToControlsRecursive(System.Web.UI.Control control, Action<System.Web.UI.Control> action)
{
action(control);
foreach (System.Web.UI.Control child in control.Controls)
{
ApplyToControlsRecursive(child, action);
}
}https://stackoverflow.com/questions/677523
复制相似问题