我正在按照惯例处理分成各种内容占位符的母版页。在许多页面上,我使用多视图来显示和隐藏基于不同视图模式的内容(查看/编辑/添加)。这意味着每个母版页内容占位符一个多视图...
当我需要切换视图模式时出现问题,例如从“查看”切换到“编辑”。我需要更改页面上的每个多视图以显示相应的信息。所以说存在4种不同的内容占位符,有3种不同的视图模式 - 这12行代码相当繁琐。
我想知道是否有办法在页面上同步或链接所有多视图,以便在更改时 - 它们都会相应地更改?喜欢通过某种主多视图?
我已经考虑过使用View的Activate Event,但这仍然意味着要开始进行大量的连接,这正是我想要避免的。
C#EERS!
答案 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);
}
}