Umbraco剃刀模板 - 从参数中指定的字段获取格式化日期

Bro*_*sto 3 umbraco razor

我正在尝试从umbraco中的剃刀模板返回格式化日期.我不知道如何从参数中定义的字段中获取值.

这是我正在玩的代码.我传入的字段称为"articleDate".我正在获取参数值输出,但是当我尝试使用参数名称获取字段的值时,它不返回任何内容.如果我通过字段名称本身询问值,那就有效.如何创建这样的通用宏?

@{var param = @Parameter.dateField;}
Field Name: @param
<br/>
Field Value: @Model.param
<br/>    
Field Value: @Model.articleDate
Run Code Online (Sandbox Code Playgroud)

我也尝试使用@ Model.GetDynamicMember(..),但这只会引发异常.

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

Error loading Razor Script getDate.cshtml
Cannot invoke a non-delegate type
Run Code Online (Sandbox Code Playgroud)

有人能指出我正确的方向吗?我只是想创建一个简单的宏,我可以使用它来格式化我的页面上的日期.

是否可以将我的日期值直接传递给剃刀宏?这就是我目前的称呼方式:

<umbraco:Macro ID="Macro1" Alias="getDate" dateField="articleDate" runat="server"></umbraco:Macro>
Run Code Online (Sandbox Code Playgroud)

mar*_*pet 6

如果你像你写的那样打电话给你的宏:

<umbraco:Macro ID="Macro1" Alias="getDate" dateField="articleDate" runat="server"></umbraco:Macro>
Run Code Online (Sandbox Code Playgroud)

您实际上是在传递"articleDate"字段的名称.在宏中,您可以使用以下方法获取Model的articleDate属性的值:

Field Value: @Model.getProperty(Parameter.dateField).Value
Run Code Online (Sandbox Code Playgroud)

而不是宏我也建议使用帮助器或 - 对于更复杂的脚本 - RenderPage.可以在这里找到一篇很好的文章:http: //joeriks.wordpress.com/2011/03/11/better-structure-for-your-razor-scripts-with-renderpage-in-umbraco/

例:

@helper GetDate(dynamic dateField)
{
     @dateField.ToString("[yourFormat]")
}
Run Code Online (Sandbox Code Playgroud)

您可以使用Page对象将参数传递给使用RenderPage呈现的脚本:

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

getdate.cshtml:

@Page.datefield.ToString("[yourFormat]")
Run Code Online (Sandbox Code Playgroud)