0

カスタム ハンドラーを SiteMapResolve イベントに追加することで、定義したロジックによってサイトマップの URL をオンザフライで更新できます。

これは、この SiteMapResolve 機能を使用しているように見える SiteMapPath コントロールでは問題ありませんが、SiteMapDataSource を使用する asp.net メニュー コントロールでも同様の結果を得たいと考えています。SiteMapResolve ハンドラーでノードを変更しても効果はありません。

誰かが私を正しい方向に向けることができますか? 乾杯:D

edit:sourcecode 不要なものをすべて削除し、次のものが残っています。

web.サイトマップ


<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="default.aspx" title="Homepage"  description="Home">
    <siteMapNode url="secondpage.aspx" title="Page 2" />
</siteMapNode>
</siteMap>

default.aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Menu runat=server ID=menu DataSourceid=dsSiteMap />
        <asp:SiteMapDataSource ID="dsSiteMap" runat="server" />
        <asp:Label runat=server id=lbMenuCount />
    </div>
    </form>
</body>
</html>

default.aspx.vb


Partial Class _Default Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
lbMenuCount.text = menu.Items.Count End Sub End Class

4

1 に答える 1

0

ポインタムハンマドに感謝しますが、私は問題を解決したと思います。

menuItemCollectionは、XMLデータソースにリンクしているときに静的に定義されたアイテム(つまり、メニューのコード内)のみを参照していると思います-したがって、Muhammadのソリューションは機能しません

私は自分のコードをmenu_MenuItemDataBoundイベントに配置することで問題を解決しました-そして私が望む結果を得ています。

すべての助けをありがとう!

于 2009-06-30T16:13:01.183 に答える