2011-05-03 2 views
3

umbraco의 면도기 템플릿에서 서식이 지정된 날짜를 반환하려고합니다. 매개 변수에 정의 된 필드에서 값을 가져 오는 방법을 모르겠습니다.Umbraco 면도기 템플릿 - 서식있는 날짜 가져 오기 매개 변수에 지정된 필드

다음은 내가 가지고 놀고있는 코드입니다. 전달하는 필드를 "articleDate"라고합니다. 매개 변수 값 출력을 얻고 있지만 매개 변수 이름을 사용하여 필드의 값을 가져 오려고하면 아무 것도 반환하지 않습니다. 필드 이름으로 값을 요청하면 작동합니다. 이런 일반적인 매크로를 만들려면 어떻게해야합니까?

@{var param = @Parameter.dateField;} 
Field Name: @param 
<br/> 
Field Value: @Model.param 
<br/>  
Field Value: @Model.articleDate 

@ Model.GetDynamicMember (..)를 사용해 보았지만 예외가 발생했습니다.

Field Value: @Model.GetDynamicMember("articleDate");​ 

Error loading Razor Script getDate.cshtml 
Cannot invoke a non-delegate type 

누군가 올바른 방향으로 나를 가리킬 수 있습니까? 난 그냥 내 페이지에서 날짜를 포맷하는 데 사용할 수있는 간단한 매크로를 만들려고 해요.

내 날짜의 값을 면도기 매크로에 직접 전달할 수 있습니까? 이것은 내가 현재 그것을 전화 했어 방법은 다음과 같습니다

<umbraco:Macro ID="Macro1" Alias="getDate" dateField="articleDate" runat="server"></umbraco:Macro> 

답변

6

당신이 당신의 매크로를 호출 할 경우 당신이 쓴 것처럼 :

<umbraco:Macro ID="Macro1" Alias="getDate" dateField="articleDate" runat="server"></umbraco:Macro> 

당신은 실제로 필드 "articleDate"의 이름을 전달하고 있습니다. 매크로에서는 다음을 사용하여 모델의 articleDate 속성 값을 얻을 수 있습니다 대신에 나는 또한 헬퍼 이상을 사용하는 것이 좋습니다 매크로의의

Field Value: @Model.getProperty(Parameter.dateField).Value 

- 더 복잡한 스크립트 - RenderPage합니다. 좋은 작성자는 여기에서 찾을 수 있습니다 : http://joeriks.wordpress.com/2011/03/11/better-structure-for-your-razor-scripts-with-renderpage-in-umbraco/

예 :

<umbraco:macro language="razor" runat="server"> 
@{ 
    Page.dateField=Model.articleDate; 
} 
@RenderPage("~/macroscripts/getdate.cshtml") 
</umbraco:macro> 

getdate.cshtml :

당신은 페이지의 개체를 사용하여 RenderPage 렌더링 스크립트에 매개 변수를 전달할 수

@helper GetDate(dynamic dateField) 
{ 
    @dateField.ToString("[yourFormat]") 
} 

@Page.datefield.ToString("[yourFormat]") 
+0

완벽! 도와 주셔서 감사합니다. – Brosto

관련 문제