私は、サイトマップを使用する構造のようなツリービューを見つけるためにだけ、MSのドキュメントの読み込みを通して良い外観を持っています。私は、誰もがどのようにサイトマップのナビゲーションのためのフォルダのような構造を持つことができるのを意識していないと思いますか?SiteMapの動作
Home
About
Me.aspx
MyFamily.aspx
MyPets.aspx
Contact
Telephone.aspx
Email.aspx
Disclaimer.aspx
を、例えば以下のような構造を取る「について」と「連絡先」のフォルダになりますが、サイトマップは、単一ページ上の階層になることはありません。したがって、ルートページには2つのメニュー項目があり、1つは「ホーム」で、aboutおよびドリルダウンメニューにドリルダウンするフォルダのように機能し、もう1つは免責事項のページへのリンクです。私は、 "About"と "Contact"のリンクをメニューに追加し、 "Home"と "Disclaimer"を隠すHomeをクリックすることができます。
Home >
Disclaimer
は、その後自宅をクリックして、すべてのメニューが戻ってきて、「アップ」メニューを持っているでしょう
Me
My Family
My Pets
を取得したいあなたについてをクリックしたとき、あなたはその後
About >
Contact >
になるだろうフォルダーを外します。
私は簡単な解決策はありませんが、現時点では私たちのWebアプリケーション全体に異なるフォルダにある静的なHTMLページを使用しています。これはあなたが想像できるように変化する必要があるものです。
アイデア?私はこれは私がコードでそれを配置します、一時的に(直接マスターページファイルであるVB.NET溶液で
<script runat="server">
Private Function GetSecondaryNavItems() As String
Dim sRet As String = ""
Dim oCurrNode As System.Web.SiteMapNode = Nothing
Dim oCurrParentNode As System.Web.SiteMapNode = Nothing
'Dim sCurrPage As String = GetURL(Request.ServerVariables("SCRIPT_NAME").ToLower())
Dim sCurrPage As String = GetURL(HttpContext.Current.Request.ServerVariables("SCRIPT_NAME").ToLower())
oCurrNode = GetCurrentNode(sCurrPage, SiteMap.RootNode)
If Not oCurrNode Is Nothing Then
oCurrParentNode = oCurrNode.ParentNode
End If
If Not oCurrParentNode Is Nothing Then
If Not oCurrParentNode Is SiteMap.RootNode Then
sRet += "Parent Folder Link"
If Not oCurrNode Is Nothing Then
For Each oChild As SiteMapNode In oCurrParentNode.ChildNodes
sRet += "Link for child"
Next
End If
End If
End If
Return sRet
End Function
Private Function GetURL(ByVal fullURL As String) As String
Return fullURL.Substring(fullURL.LastIndexOf("/"))
End Function
Private Function GetCurrentNode(ByVal _sCurrentPageURL As String, ByVal _oNode As SiteMapNode) As SiteMapNode
Dim oNodeRet As SiteMapNode = Nothing
For Each oNodeCheck As SiteMapNode In _oNode.ChildNodes
If oNodeCheck.HasChildNodes = True Then
oNodeRet = GetCurrentNode(_sCurrentPageURL, oNodeCheck)
End If
If oNodeRet Is Nothing Then
Exit For
End If
Dim sURL As String = oNodeCheck.Url.ToLower()
Dim iPos As Integer = sURL.IndexOf("?")
If iPos > 0 Then
sURL = sURL.Substring(0, iPos)
End If
iPos = sURL.LastIndexOf("/")
If iPos > 0 Then
sURL = sURL.Substring(iPos)
End If
If sURL = _sCurrentPageURL Then
oNodeRet = oNodeCheck
Exit For
End If
Next
Return oNodeRet
End Function
</script>
を思い付くしなければならなかった
EDIT
後のモデル)。
私はその後、一時的にだけでテストするために、再び身体
<div id="sidebar">
<%= GetSecondaryNavItems() %>
</div>
でこれを持っています。実際には何も出力しませんが、GetURLの定義が間違っていると思います。私はそれが実際のファイルを取得していたと仮定していましたか?でも、私は非常に間違っている可能性:)
編集編集:何らかの理由で、私はすべての出力が届かないので、私はそれが私のサイトマップだと思いました。私はそれをデバッグする必要がありますが、それはかなり遅いですので、私は、現時点では中リモーティングよ;)
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="Accounts/Default.aspx" title="Accounts" description="Accounts">
<siteMapNode url="Accounts/Test.aspx" title="Client Balances" description="Client Balances">
<siteMapNode url="Hello.aspx" title="Hello" description="rarar" />
<siteMapNode url="Hiya.aspx" title="Hiya" description="rarar" />
</siteMapNode>
<siteMapNode url="Test.aspx" title="Test" description="rarar" />
</siteMapNode>
</siteMap>
ここでは例のサイトマップがあります。
私の編集内容を確認したら、時間があれば素晴らしいと思います。 Cheers – Kezzer
C#でGetURLを追加したばかりですが、それらのページでクエリーストリングを使用していない可能性があるので、おそらくあなたが働いていたはずのものです。もう一度見てみましょう。 –
私はそれで問題を見つけることができないようですが、何も出力されませんが、おそらく私のサイトマップ(私は私の投稿の編集に入れました)とは関係ありません。私は明日、私が残念ながら仕事に戻ったときにチェックしなければならないでしょう。スニペットのために乾杯、それは完璧な意味があります。 – Kezzer