Hi I want to add a class of "active" to my li, if it is active or if I am on a page under that. 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 with this, 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 get. 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)">
I have now tried with this, but no 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>
ok here is the solution. This is for typed, not dynamic cshtml.
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
Layout = null;
var home = Model.Content.AncestorOrSelf(1);
}
<ul>
@*Render Home item*@
@{ var homeActive = ""; }
@if( home.Id == Model.Content.Id){
homeActive = "active";
}
<li class="@homeActive">
<a href="@home.Url">
@home.Name
</a>
</li>
@*Render Home children*@
@foreach (var item in home.Children.Where(x => x.IsVisible()))
{
var active = "";
if(home.Id != Model.Content.Id){ @* if NOT home *@
if (item.Id == Model.Content.AncestorOrSelf(2).Id){
@* if foreach id and currentpage ancestor id is equal *@
active = "active";
}
}
<li class="@active">
<a href="@item.Url">
@item.Name
</a>
</li>
}
</ul>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With