2011-05-03 82 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:

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

您可以使用頁面對象傳遞的參數與RenderPage渲染腳本

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

完美!謝謝您的幫助。 – Brosto 2011-05-03 18:54:41