需要帮助实现Orchard CMS形状方法

时间:2015-03-20 15:31:21

标签: c# orchardcms orchardcms-1.7

我正在学习Orchard CMS,并且无法在不创建一整套模型,驱动程序等的情况下实现形状方法来返回一些任意文本。

我正在尝试使用http://docs.orchardproject.net/Documentation/Accessing-and-rendering-shapes

处的代码
public class DateTimeShapes : IDependency {
private readonly IClock _clock;

public DateTimeShapes(IClock clock) {
    _clock = clock;
    T = NullLocalizer.Instance;
}

public Localizer T { get; set; }

[Shape]
public IHtmlString DateTimeRelative(HtmlHelper Html, DateTime dateTimeUtc) {
    var time = _clock.UtcNow - dateTimeUtc;

    if (time.TotalDays > 7)
        return Html.DateTime(dateTimeUtc, T("'on' MMM d yyyy 'at' h:mm tt"));
    if (time.TotalHours > 24)
        return T.Plural("1 day ago", "{0} days ago", time.Days);
    if (time.TotalMinutes > 60)
        return T.Plural("1 hour ago", "{0} hours ago", time.Hours);
    if (time.TotalSeconds > 60)
        return T.Plural("1 minute ago", "{0} minutes ago", time.Minutes);
    if (time.TotalSeconds > 10)
        return T.Plural("1 second ago", "{0} seconds ago", time.Seconds);

    return T("a moment ago");
}

然而,我不完全确定应该去哪里。我已经尝试将它放在控制器和模型中,但结果不成功。

所以,我的问题是,这个代码应该放在哪里?从模板中调用它的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以将此代码放在名为Shapes.cs或DateTimeShapes.cs的类中(不是必需的,但是与Orchard的约定类型)

然后您可以在这样的视图中使用它:

@{
    var date = DateTime.Now;
}

@Display.DateTimeRelative(date)