将asp:menuitems渲染为链接

时间:2013-11-13 12:18:06

标签: c# html asp.net

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

1 个答案:

答案 0 :(得分:0)

是否有必要使用:

OnMenuItemClick="DefaultMenu_MenuItemClick"

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

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