Hey. I want to add the "active" class to my li if it is active or if I am on the page under it. I have the following code
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage @{ Layout = null; } <nav class="topNav"> <ul> @foreach (var item in Model.Content.AncestorOrSelf(1).Children.Where(x => x.IsVisible() && x.IsDocumentType("Subfrontpage") || x.IsDocumentType("Procesguide"))) { <li> <a href="@item.Url">@item.Name</a> </li> } </ul> </nav>
I think I can do something about it, but it gives an error
var isSelected = Model.Path.Contains(item.Id.ToString()) ? "active" : ""; <li class="@Html.Raw(isSelected)"> <a href="@item.Url">@item.Name</a> </li>
This is the error I am getting. Line 10.
Compilation Error Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. Compiler Error Message: CS1061: 'Umbraco.Web.Models.RenderModel' does not contain a definition for 'Path' and no extension method 'Path' accepting a first argument of type 'Umbraco.Web.Models.RenderModel' could be found (are you missing a using directive or an assembly reference?) Source Error: Line 8: @foreach (var item in Model.Content.AncestorOrSelf(1).Children.Where(x => x.IsVisible() && x.IsDocumentType("Subfrontpage") || x.IsDocumentType("Procesguide"))) Line 9: { Line 10: var isSelected = Model.Path.Contains(item.Id.ToString()) ? "active" : ""; Line 11: Line 12: <li class="@Html.Raw(isSelected)">
Now I tried with this, but not lunk
<ul> <li> <a href="@home.Url">@home.Name</a> </li> @foreach (var item in Model.Content.AncestorOrSelf(1).Children.Where(x => x.IsVisible() && x.IsDocumentType("Subfrontpage") || x.IsDocumentType("Procesguide"))) { var isSelected = item.IsDescendant(Model,"active", ""); <li class="@Html.Raw(isSelected)"> <a href="@item.Url">@item.Name</a> </li> } </ul>
source share