Я сломал локальную установку Sitecore, поэтому решил установить чистую версию 9.3. Я добавил свой собственный проект обратно, но теперь я получаю ошибки ниже, есть идеи?
@using Sitecore.Mvc
@using Sitecore.Mvc.Analytics.Extensions
@using Sitecore.Mvc.Presentation
@using TAC.Utils
@using TAC.Utils.Helpers
@model RenderingModel
@{
Layout = "~/Views/Guard/Layouts/_Head.cshtml";
var decorationBannerUrl = Html.SitecoreMediaUrl(Statics.FieldNames.DecorationBanner);
var mobileBannerUrl = Html.SitecoreMediaUrl("MobileBanner");
var headerCssClass = "page-header";
var headerBackgroundStyle = "";
var mobileBackgroundStyle = "";
if (!String.IsNullOrEmpty(decorationBannerUrl))
{
headerCssClass = headerCssClass + " " + "bg-media bg-parallax";
headerBackgroundStyle = string.Format("background-image: url('{0}')", decorationBannerUrl);
}
if (!String.IsNullOrEmpty(mobileBannerUrl))
{
headerCssClass = headerCssClass + " " + "bg-media bg-parallax";
mobileBackgroundStyle = string.Format("background-image: url('{0}')", mobileBannerUrl);
}
else
{
if (!String.IsNullOrEmpty(decorationBannerUrl))
{
// no special mobile image exists so fall back to the desktop header image
headerCssClass = headerCssClass + " " + "bg-media bg-parallax";
mobileBackgroundStyle = string.Format("background-image: url('{0}')", decorationBannerUrl);
}
}
}
<div id="main-container">
<header class="siteheader">
@Html.Sitecore().Placeholder(Statics.PlaceholderKeys.HeaderNavigation)
</header>
<main role="main">
<div class="visible-lg visible-md">
@using (Html.BeginHeader(new { @class = headerCssClass, style = headerBackgroundStyle }))
{
@Html.Sitecore().Placeholder(Statics.PlaceholderKeys.HeaderContent)
}
</div>
<div class="visible-sm visible-xs">
<div>
@using (Html.BeginHeader(new { @class = headerCssClass, style = mobileBackgroundStyle }))
{
}
</div>
@Html.Sitecore().Placeholder(Statics.PlaceholderKeys.HeaderContent)
</div>
<section class="section section-full">
@Html.Sitecore().DynamicPlaceholder(Statics.PlaceholderKeys.MainContent)
</section>
</main>
<div>
@Html.Sitecore().Placeholder(Statics.PlaceholderKeys.FooterContent)
</div>
</div>
using System;
using System.Text.RegularExpressions;
using Sitecore.Data.Items;
using Sitecore.Links;
namespace TAC.Utils.Helpers
{
public class CustomLinkProvider : Sitecore.Links.LinkProvider
{
public override string GetItemUrl(Item item, UrlOptions options)
{
string query = String.Format("/*/system/Aliases//*[@@templateid='{0}' and contains(@Linked item, '{1}')]", Sitecore.TemplateIDs.Alias, item.ID);
Sitecore.Data.Items.Item alias = Sitecore.Context.Database.SelectSingleItem(query);
string aliasUrl = string.Empty;
if (alias != null)
{
aliasUrl = base.GetItemUrl(alias, options);
//remove the system part of the url that is returned.
aliasUrl = Regex.Replace(aliasUrl, @"/sitecore/system/aliases", "", RegexOptions.IgnoreCase);
aliasUrl = aliasUrl.Replace("-", " ");
return aliasUrl;
}
else
{
return base.GetItemUrl(item, options);
}
}
}
}
Ошибка, возникающая при просмотре редактора опыта, выглядит следующим образом:
Представление с отображением ошибок: /Views/Guard/Layouts/Default.cshtml: ошибка при просмотре рендеринга: '/Views/Guard/Layouts/Default.cshtml' (модель: 'Sitecore. Mvc .Presentation.RenderingModel, Sitecore. Mvc').
И ошибка, которую я получаю на реальном сайте:
Ссылка на объект не установлена для экземпляра объекта. Описание: произошло необработанное исключение.
Сведения об исключении: System.NullReferenceException: для ссылки на объект не задан экземпляр объекта.
В этой строке, похоже, происходит ошибка:
var canonical = CLP.GetItemUrl(Model.Item, options);
Чего мне не хватает?