链接多个asp.NET MultiViews

时间:2009-03-24 13:57:55

标签: c# master-pages multiview

我正在按照惯例处理分成各种内容占位符的母版页。在许多页面上,我使用多视图来显示和隐藏基于不同视图模式的内容(查看/编辑/添加)。这意味着每个母版页内容占位符一个多视图...

当我需要切换视图模式时出现问题,例如从“查看”切换到“编辑”。我需要更改页面上的每个多视图以显示相应的信息。所以说存在4种不同的内容占位符,有3种不同的视图模式 - 这12行代码相当繁琐。

我想知道是否有办法在页面上同步或链接所有多视图,以便在更改时 - 它们都会相应地更改?喜欢通过某种主多视图?

我已经考虑过使用View的Activate Event,但这仍然意味着要开始进行大量的连接,这正是我想要避免的。

C#EERS!

2 个答案:

答案 0 :(得分:1)

执行此操作的最佳方法是在母版页上放置一个事件,单个多视图会为其添加事件处理程序。

这不需要太多代码,您可以通过为所有实例创建从MultiView继承的基类来避免重复该代码。

答案 1 :(得分:0)

另一个更自动的选项(但不像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);
    }
}