2014-04-09 2 views
1

Sitecore에서 내부 링크가 설정되어 있으며 Glass.Mapper를 사용하여 필드를 매핑하려고하지만 빈 페이지로 계속 되돌아갑니다. 내가 뭘 잘못하고 있는지.Glass.Mapper로 내부 링크 받기

Sitecore의 템플릿은 매우 간단하다 : Screen capture of Sitecore template

는 링크의 소스 만 생성 할 수있는 '시스템'템플릿을 기반으로 컨텐츠를 할 수있는 폴더로 설정됩니다. 내 코드에서

가 나는 것을 목적으로 설정 한 :

public void DoStuff(Sitecore.Data.Items.Item item) 
{ 
    var status = item.GlassCast<Status>(); 
    this.DoOtherStuff(status); 
} 

내가 실행 해요 것은, glassObj.Description하고 glassObj.StatusCode가되고있다 : 다음과 같이 기본적으로 사용되는

namespace Playground.GlassObjects 
{ 
    public partial class Status 
    { 
     public virtual string Description { get; set; } 
     public virtual string StatusCode { get; set; } 
     public virtual Glass.Mapper.Sc.Fields.Link System { get; set; } 
    } 
} 

내가 원하는/예상대로 정확히 유선,하지만 glassObj.System되지 않습니다.

Screen capture of visual studio watch window

사람이 내가 잘못 여기서 뭘하는지 말해 줄래? 나는 지금 막 뒤에서 계속되고있는 모든 마법을 잃고있다.

+0

필드에 값이 설정되어 있는지 확인할 수 있습니까? 원시 필드 값을 보면 무엇을 볼 수 있습니까? –

+0

@RuudvanFalier DoStuff()에서 중단 점을 설정하고 매개 변수를 살펴 보았습니다. 이것이 내가 본 것입니다 : http://i.imgur.com/EtoOGLY.png – zeonic

답변

4

Glass.Mapper.Sc.Fields.Link 클래스는 일반 링크 필드와 함께 작동하도록 설계되었습니다. 내부 링크 필드는 값을 경로 (예 :/sitecore/content/home/events)로 저장합니다. 즉, Link 클래스와 호환되지 않습니다.

대신 생성 한 다른 클래스에 매핑해야합니다.

public partial class Status 
{ 
    public virtual string Description { get; set; } 
    public virtual string StatusCode { get; set; } 
    public virtual MySystem System { get; set; } 
} 

public class MySystem{ 

    public virtual string Url { get; set; } 
    public virtual string MyField { get; set; } 
}