代码之家  ›  专栏  ›  技术社区  ›  Nick

链接多个asp。NET多视图

  •  0
  • Nick  · 技术社区  · 17 年前

    我正在处理一个母版页,它像往常一样被拆分为各种内容占位符。在许多页面上,我使用多视图根据不同的视图模式(查看/编辑/添加)显示和隐藏内容。这意味着每个母版页内容占位符有一个多视图。..

    当我需要切换视图模式时,问题就来了,例如从“查看”切换到“编辑”。我需要更改页面上的每个多视图以显示相应的信息。假设存在4个不同的内容占位符,有3种不同的视图模式——这是12行相当乏味的代码。

    我想知道是否有一种方法可以同步或链接页面上的所有多视图,这样当一个视图发生变化时,它们都会相应地发生变化?比如通过某种大师级的多视角?

    我曾考虑过使用视图的激活事件,但这仍然意味着从一开始就要进行大量的连接,这也是我试图避免的。

    C#爱好者!

    2 回复  |  直到 17 年前
        1
  •  1
  •   Rob West    17 年前

    最好的方法是在母版页上有一个事件,各个多视图可以向该事件添加一个事件处理程序。

        2
  •  0
  •   eglasius    17 年前

    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);
        }
    }