C# Umbraco剃须刀模板错误
我不熟悉Umbraco中的Razor模板(一般来说),但我更喜欢使用它而不是XSLT文件。然而,我遇到了一个我不知道如何解决的问题。我得到以下信息:C# Umbraco剃须刀模板错误,c#,content-management-system,razor,umbraco,C#,Content Management System,Razor,Umbraco,我不熟悉Umbraco中的Razor模板(一般来说),但我更喜欢使用它而不是XSLT文件。然而,我遇到了一个我不知道如何解决的问题。我得到以下信息: An unknown error occured while rendering the following code: System.NullReferenceException: Object reference not set to an instance of an object. at RazorEngine.Dynamic.baeff
An unknown error occured while rendering the following code:
System.NullReferenceException: Object reference not set to an instance of an object.
at RazorEngine.Dynamic.baeffbebc.Execute()
at RazorEngine.Templating.TemplateService.Parse[T](String template, T model, String name)
at umbraco.MacroEngines.RazorEngine.GetResult(String cacheIdentifier, String template, INode currentPage, String& result)
我的宏如下所示:
@using System
@using uComponents.Core
@using uComponents.Core.uQueryExtensions
@using System.Linq
@using umbraco.NodeFactory
@helper NoPictures()
{
<li>Pictures coming soon!</li>
}
@helper Pictures(String crop)
{
<li><a rel="photos" href="@crop" title="test">
<img src="@crop" class="shadow hovershadow"></a></li>
}
@{
var n = Node.GetCurrent();
var pictures = n.GetProperty("pictures").Value;
if(pictures.Length <= 0)
{
NoPictures();
}
else
{
var pictureNodes = pictures.Split(',');
foreach (var pictureNode in pictureNodes)
{
var node = new Node(Convert.ToInt32(pictureNode));
var photoId = node.GetProperty("picture").Value;
var photo = uComponents.Core.uQuery.GetMedia(Convert.ToInt32(photoId));
var crop = MediaExtensions.GetImageCropperUrl(photo, "umbracoFile", "wide");
Pictures(crop);
}
}
}
@使用系统
@使用uComponents.Core
@使用uComponents.Core.uQueryExtensions
@使用System.Linq
@使用umbraco.NodeFactory
@辅助图片()
{
照片马上就要来了
}
@助手图片(字符串裁剪)
{
}
@{
var n=Node.GetCurrent();
var pictures=n.GetProperty(“pictures”).值;
如果(pictures.Length好的话,我的最终代码是:
@using System
@using uComponents.Core
@using uComponents.Core.uQueryExtensions
@using System.Linq
@{
var n = uQuery.GetCurrentNode();
var pictures = n.GetProperty("pictures").Value;
if(pictures.Length > 0)
{
var pictureNodes = pictures.Split(',');
foreach (var pictureNode in pictureNodes)
{
var node = uQuery.GetNode(Convert.ToInt32(pictureNode));
var photoId = node.GetProperty("picture").Value;
var photo = uQuery.GetMedia(Convert.ToInt32(photoId));
var crop = photo.GetImageCropperUrl("imageCropper", "wide");
<li><a rel="photos" href="@crop" title="@node.GetProperty("title").Value">
<img src="@crop" height="150px" width="150px" class="shadow hovershadow"></a></li>
}
}
else
{
<li>Pictures coming soon!</li>
}
}
@使用系统
@使用uComponents.Core
@使用uComponents.Core.uQueryExtensions
@使用System.Linq
@{
var n=uQuery.GetCurrentNode();
var pictures=n.GetProperty(“pictures”).值;
如果(图片长度>0)
{
var pictureNodes=pictures.Split(',');
foreach(pictureNodes中的变量pictureNode)
{
var node=uQuery.GetNode(Convert.ToInt32(pictureNode));
var photoId=node.GetProperty(“图片”).Value;
var photo=uQuery.GetMedia(Convert.ToInt32(photoId));
var-crop=photo.GetImageCropperUrl(“imageCropper”、“wide”);
}
}
其他的
{
照片马上就要来了
}
}
代码变化不大,但很明显,在之前运行宏时,我在某个地方出现了一个错误。无论我如何更改脚本,错误始终存在。结果表明,Umbraco的Razor缓存太过激进或存在错误,因此在对脚本进行更改时,缓存没有失效。为了解决这个问题,我d以回收IIS中的应用程序池。现在一切正常。如果我有缓存问题,我右键单击内容根节点并点击“重新发布整个站点”。如果这是一个真正的缓存问题,请删除App_Data/umbraco.config文件并点击站点中的任何页面。缓存文件将重新生成。