0

メニュー バーを含むマスター ページがあります。このメニューは、多数のオプションを備えたサイトマップにリンクされています。私が行ったことは、各メニュー項目にアイコンをレンダリングすることです。

  protected void NavigationMenu_MenuItemDataBound(object sender, MenuEventArgs e)
    {
     SiteMapNode node = e.Item.DataItem as SiteMapNode;

     if (!string.IsNullOrEmpty(node["imageUrl"]))
       e.Item.ImageUrl = node["imageUrl"];    
    }

各ポストバックで、このイベントが発生することを理解しています。それらを一度ロードするだけで、再度ロードする必要がない方法はありますか?

4

1 に答える 1

0

ハンドラーは、すべてのデータ バインド イベントで実行されます。ViewState が追跡された後に画像の URL が設定されると、コントロールの ViewState に移動するため、このイベントは通常、すべてのポストバックで実行されるわけではありません。

つまり、コントロール (メニュー) の DataBind() が明示的に呼び出されない場合、このイベントはトリガーされません。

これは、少なくとも他のデータ バインド コントロールが行うことです。たとえば、グリッドは、ページング/ソートなどを除いて、ポストバックごとに再バインドしません。-> 状態の再構築が必要な操作。

于 2013-02-28T10:36:07.027 に答える