2011-03-01 5 views
0

Umbraco (및 일반적으로)의 면도기 템플릿을 처음 사용했지만 XSLT 파일보다 더 사용하는 것이 좋습니다. 그러나 나는 해결 방법을 모르는 문제에 직면 해있다. 이 방법 디버깅하는 나에게 아이디어를주고있다하더라도 ...Umbraco 면도기 템플릿 오류

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

정말 사람이 제공 할 수있는 모든 도움을 주셔서 감사합니다 :이 같은

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) 

내 매크로 외모 : 나는 다음과 같은 메시지가 무엇입니까 Umbraco 내에서. 감사!

편집 : Umbraco의 버전 4.6.1

답변

2

좋아, 내 마지막 코드는 다음이었다 :

@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에서 응용 프로그램 풀을 재활용해야했습니다. 모두 지금 일하고있다.

+0

캐시 문제가있는 경우 콘텐트 루트 노드를 마우스 오른쪽 단추로 클릭하고 "전체 사이트 다시 게시"를 누릅니다. 실제 캐싱 문제 인 경우 App_Data/umbraco.config 파일을 삭제하고 사이트의 모든 페이지를 누르십시오. 캐시 파일이 다시 작성됩니다. – dampee