0

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

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

我想知道是否有一种方法可以同步或链接页面上的所有多视图,以便当一个更改时-它们都会相应地更改?就像通过某种主多视图?

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

C#eers!

4

2 回答 2

1

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

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

于 2009-03-24T14:31:55.043 回答
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);
    }
}
于 2009-03-24T22:48:56.440 回答