私は asp:menu を次のように定義しています:
<div id="MenuContainer" runat="server" class="menuContainer">
<asp:Menu ID="DefaultMenu" runat="server" DataSourceID="SiteMapDataSource" SkinID="TopMenu" OnMenuItemDataBound="DefaultMenu_MenuItemDataBound" OnMenuItemClick="DefaultMenu_MenuItemClick" DynamicPopOutImageTextFormatString="" >
<DataBindings>
<asp:MenuItemBinding DataMember="SiteMapNode" NavigateUrlField="Url" TextField="Title" ToolTipField="Description" />
</DataBindings>
</asp:Menu>
<asp:SiteMapDataSource ID="SiteMapDataSource" runat="server" EnableViewState="False" ShowStartingNode="False" SiteMapProvider="WebserviceSiteMapProvider" />
</div>
上記のように、メニュー項目は SiteMapDataSource から生成されます。レンダリングされると、すべてのメニュー リンクがポストバックになり、関連するページにリダイレクトされます。
protected void DefaultMenu_MenuItemClick(object sender, MenuEventArgs e)
{
Response.Redirect(e.Item.DataPath);
}
メニュー項目をポストバックではなくハイパーリンクとしてレンダリングする簡単な方法を知っている人はいますか?
これにより、アプリケーションに不要なラウンドトリップが追加され、特定の顧客の設定でパフォーマンスの問題が発生しているため、質問します。私は午前中ずっとインターネットでこれを探し回っていましたが、実際には明らかなものは見当たりません。
注: これは使用されている .Net 3.5 です。
何かが足りない場合は、ただ言ってください。
同僚の 1 人がこの問題を教えてくれました。