我有一个 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。
如果我遗漏了什么,请直接说。
没关系,我的一位同事向我展示了这个问题,sitemapdatasource 没有返回 url,因此链接被呈现为回发而不是超链接。