2009-03-24 11 views
0

私は、通常のようにさまざまなコンテンツプレースホルダに分割されたマスターページを扱っています。多くのページでは、さまざまなビューモード(表示/編集/追加)に基づいてコンテンツを表示および非表示するためにマルチビューを使用します。これは、マスターページの1つのコンテンツプレースホルダーごとに1つのマルチビューを意味します。複数のasp.NETマルチビューをリンクする

ビューモードを切り替える必要があるとき、「ビュー」から「編集」などの問題が発生します。私は、対応する情報を表示するためにページ上のすべてのマルチビューを変更する必要があります。つまり、4つの異なるコンテンツプレースホルダーが存在し、3つのビューモード - 12行の非常に面倒なコードです。

ページ上のすべてのマルチビューを同期またはリンクする方法があると、1つが変更されたときに変更されるようになりました。マスターマルチビューのようなもの?

私はViewのActivateイベントを使用することを考えましたが、これはやはり私が避けようとしている多くの配線を始めることを意味します。

C#eers!

答えて

1

これを行う最善の方法は、個々のマルチビューにイベントハンドラを追加するイベントをマスタページに設けることです。

多すぎるコードは必要ありません。すべてのインスタンスに対してMultiViewから継承した基本クラスを作成することで、そのコードの重複を避けることができます。

0

もう1つの自動オプション(ただし、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); 
    } 
} 
関連する問題