0

我有一个 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,因此链接被呈现为回发而不是超链接。

4

1 回答 1

0

是否需要使用:

OnMenuItemClick="DefaultMenu_MenuItemClick"

这将创建一个回发,您需要在没有它的情况下构建一个控件。

这是一个答案的链接,可以更简单地使用站点地图的菜单,可能值得一看。 https://stackoverflow.com/a/1030609/2366880

于 2013-11-13T14:23:32.753 回答