2011-05-03 55 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