Skip to content

Build failed due to old UmbracoContext.Content.GetAtRoot - solved #429

Description

@patmoe

This was a new empty Umbraco 17.0.2 - booted to backoffice ok - added the Clean package via dotnet add... Now the frontend doesnt show (500)..

CodexGPT5.1 fixed the error - "The Umbraco build failed because Clean’s authors.cshtml used the old UmbracoContext.Content.GetAtRoot() API. I updated it to the v17-friendly helper: /Views/Partials/authors.cshtml"

@inherits UmbracoViewPage

@using Clean.Core.Helpers
@using Clean.Core.Models.ViewModels;
@using ContentModels = Umbraco.Cms.Web.Common.PublishedModels
@using Umbraco.Extensions

@{
    AuthorList authorList = Umbraco.ContentAtRoot().DescendantsOrSelf<AuthorList>().FirstOrDefault();
    int modelId = Model.Id;
    var isAuthorListPage = modelId == authorList?.Id;
    var fallbackPageSize = isAuthorListPage ? 10 : 3;

    var pageSize = QueryStringHelper.GetIntFromQueryString(Context.Request.Query, "size", fallbackPageSize);
    var pageNumber = QueryStringHelper.GetIntFromQueryString(Context.Request.Query, "page", 1);
    var allAuthors = authorList?.Children<Author>().Where(x => x.IsVisible()) ?? Enumerable.Empty<Author>();
    var pageOfAuthors = allAuthors.Skip((pageNumber - 1) * pageSize).Take(pageSize);
    var totalItemCount = allAuthors.Count();
    var pageCount = totalItemCount > 0 ? Math.Ceiling((double)totalItemCount / pageSize) : 1;

}

<div class="container">
    <div class="row">
        <div class="col-lg-8 col-md-10 mx-auto">
            <div class="container-fluid">
                <div class="row">
                    @foreach (var author in pageOfAuthors)
                    {
                        <div class="col-4 mx-auto">
                            <div class="card">
                                <header>
                                    <img src="@(author.MainImage.Url())" alt="@author.Name" class="w-100" />
                                </header>
                                <div class="card-body">
                                    <div class="content-left text-start my-auto py-4">
                                        <h2 class="card-title">@author.Name</h2>
                                        <p class="card-description">@author.MetaDescription</p>
                                        <a href="@author.Url()" class="text-primary">
                                            @Umbraco.GetDictionaryValue("Author.ReadMore")
                                        </a>
                                    </div>
                                </div>
                            </div>
                        </div>
                    }
                </div>
            </div>

            @if (isAuthorListPage)
            {
                @await Component.InvokeAsync("Pagination", new { totalItems = totalItemCount, url = Model.Url(), pageNumber = pageNumber, pageSize = pageSize })
            }
        </div>
    </div>
</div>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions