I am trying to build a list with the name of the pages in order to create a breadcrumb. I am using this code in my layout:
<ol class="breadcrumb " style="margin-bottom: 0px;">
@ViewData("Chemin") As New List(Of String)
@If (Not IsDBNull(ViewContext.RouteData.Values("action").ToString())) Then
@ViewData("Chemin").Add(ViewContext.RouteData.Values("action").ToString())
End If
@For i = 0 To ViewData("Chemin").Count - 1
@:<li>
@ViewData("Chemin").Item(i)
@:</li>
Next i
</ol>
the problem is that I get an error on the line with .Add
System.NullReferenceException
EDIT : What I've tried since is
<ol class="breadcrumb " style="margin-bottom: 0px;">
@If (Not IsDBNull(ViewData("Chemin"))) Then
@Code Dim lst As New List(Of String)
ViewData("Chemin") = lst
End Code
End If
@If (Not IsDBNull(ViewContext.RouteData.Values("action").ToString())) Then
@Code ViewData("Chemin").Add(ViewContext.RouteData.Values("action").ToString()) End Code
End If
@For i = 0 To ViewData("Chemin").Count - 1
@:<li>
@ViewData("Chemin").Item(i)
@:</li>
Next i
</ol>
The problem is that I get each time only the actual page
This is what I've come up with :
<ol class="breadcrumb " style="margin-bottom: 0px;margin-top: 10px;">
@If Session IsNot Nothing Then
@If ((Session("Chemin") Is Nothing) Or (ViewContext.RouteData.Values("action".ToString()) = "Index")) Then
@Code Dim lst As New List(Of String)()
Session("Chemin") = lst
End Code
End If
@Code Dim values = ViewContext?.RouteData?.Values End Code
@If (values IsNot Nothing) And (Not (ViewContext.RouteData.Values("action") Is Nothing) AndAlso Not Session Is Nothing AndAlso Not (Session("Chemin") Is Nothing) AndAlso Not Session("Chemin").Contains((ViewContext.RouteData.Values("action").ToString()))) Then
@Code Session("Chemin").Add(ViewContext.RouteData.Values("action").ToString())
Session("Chemin").Add(ViewContext.RouteData.Values("controller").ToString())
End Code
End If
@For i = 0 To Session("Chemin").Count - 2 Step 2
@:<li>
@:<a href =@Url.Action(Session("Chemin").Item(i), Session("Chemin").Item(i + 1))>
@Session("Chemin").Item(i)
@:</a>
@:</li>
Next i
End If
</ol>