我破坏了我在本地安装的 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);
我错过了什么?