2017-01-10 14 views
1

내가 기본 템플릿 및 표준 값이 $를 가지고 같은 표준 렌더링 매개 변수에서 상속 새 템플릿을 생성 한 드롭 다운 목록Sitecore MVC 표준 렌더링 매개 변수

를 사용하여 배경 색상을 선택할 수 사용자에게 원하는 이름 토큰 여기

입니다 템플릿 색상 정의 : 나는 또한 템플릿의 여러 인스턴스를 만든 --- DropLink ---/sitecore/내용/홈/글로벌/색상

[SitecoreType(TemplateId = "{55DB8F6A-807D-48F8-A3D1-D81037938F13}", AutoMap = true)] 
public interface IColor:IContentBase 
{ 
    string ColorName { get; set; } 
} 


ColorName (레드 , 블루, 그린)

enter image description here

는 그럼 난 매개 변수로 ViewRendering에 컬러 템플릿을 할당합니다.

enter image description here

마지막으로, cshtml 파일에, 나는이 매개 변수를 읽으려고

@using Glass.Mapper.Sc 
@model INews 

<H3> Hot News: </H3> 
@{ 
    var rendering = RenderingContext.Current.Rendering; 
    string id = rendering.Parameters["ColorName"]; 
    var context = new SitecoreContext(); 
    var result=context.GetItem<IColor>(new Guid(id)); 

} 

<div style="background-color: @NewsRepository.GetBackgroundColor(rendering);" class="panel-body"> 
    <br/> 
    <span>@result.ColorName</span><br/> 
    @Model.Title 
</div> 

결과는 항상 {55DB8F6A-807D-48F8-A3D1-D81037938F13} 나는 "그린"을 기대하는 반면. GlassMapper가 설치된 Sitecore API도 사용하려고했지만 여전히 Guid를 얻습니다.

답변

2

Glass Mapper를 사용하고 있으므로 다른 템플릿과 동일한 방식으로 렌더링 매개 변수에 대한 모델을 만들어야합니다.

조회 항목에 대한 모델을 생성하십시오. "색상"이라고하기보다 제네릭 형식을 만드는 것이 좋습니다. 이렇게하면 코드의 다른 조회 항목에 다시 사용할 수 있습니다.

[SitecoreType(TemplateId = "{template-guid}", AutoMap = true)] 
public class LookupItemModel : GlassBase 
{ 
    public virtual string Text { get; set; } 
} 

렌더링 매개 변수에 대한 모델을 만듭니다. TemplateId을 렌더링 매개 변수 템플릿으로 설정해야합니다. 속성의 반환 유형이 위에서 만든 LookupItemModel으로 설정되어 있습니다.

[SitecoreType(TemplateId = "{guid-for-rendering-parameter}", AutoMap = true)] 
public class ColorParameters 
{ 
    public virtual LookupItemModel Color { get; set; } 
} 

이제 뷰에서 강력한 형식의 모델로 렌더링 매개 변수에 액세스 할 수 있습니다. 반환 유형이 위에 올바르게 설정되어 있기 때문에 Glass가 자동으로 GUID를 조회 항목에 매핑하므로 별도의 context.GetItem() 호출을하지 않아도됩니다.

@{ 
    var parameters = Html.Glass().GetRenderingParameters<ColorParameters>(); 
    string color = parameters.Color.Text; 
} 

할 수 있습니다 더 Rendering Parameters in Glass mapper in this article 사용에 대한.

+0

감사를 사용해보십시오. IColor 클래스를 이미 정의했습니다. 하지만 glass mapper return Guid –

+0

원본 질문에 세부 정보를 업데이트해야하지만 작동해야합니다. 모든 템플릿과 항목을 게시했는지 확인하십시오. – jammykam

0

당신의 대답은 다음

@result.ColorName.Value.Tostring();