【问题标题】:Umbraco Razor Template ErrorUmbraco Razor 模板错误
【发布时间】:2011-03-01 01:15:15
【问题描述】:

我是 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.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);
     }
   }
}

我非常感谢任何人可以提供的任何帮助......即使它让我知道如何在 Umbraco 中调试它。谢谢!

编辑:Umbraco 4.6.1 的版本

【问题讨论】:

    标签: c# content-management-system razor umbraco


    【解决方案1】:

    好的,我的最终代码是这样的:

    @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>
       }
    }
    

    代码没有太大变化,但显然之前运行宏时,我在某个地方出错了。无论我如何更改脚本,错误仍然存​​在。事实证明,Umbraco 的 Razor 缓存过于激进或存在错误,因此在对脚本进行更改时缓存并未失效。为了解决这个问题,我不得不在 IIS 中回收应用程序池。现在一切正常。

    【讨论】:

    • 如果我有缓存问题,我右键单击内容根节点并点击“重新发布整个站点”。如果这是一个真正的缓存问题,请删除 App_Data/umbraco.config 文件并点击站点中的任何页面。缓存文件将被重建。
    猜你喜欢
    • 2012-09-30
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多