我有一个asp:菜单定义如下:
<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,因此链接被呈现为回发而不是超链接。
答案 0 :(得分:0)
是否有必要使用:
OnMenuItemClick="DefaultMenu_MenuItemClick"
会创建一个回发,你需要在没有它的情况下构建一个控件。
这是一个回答链接,更简单地使用了站点地图的菜单,可能值得一看。 https://stackoverflow.com/a/1030609/2366880