需要帮助实施 Orchard CMS Shape Method
Need help implementing an Orchard CMS Shape Method
我刚刚学习 Orchard CMS,但在不创建一整套模型、驱动程序等的情况下,无法对 return 一些任意文本实施形状方法
我正在尝试使用 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");
}
但是,我不完全确定它应该去哪里。我试过将它放在控制器和模型中,但结果不成功。
所以,我的问题是,这段代码应该放在哪里?从模板调用它的正确方法是什么?
您可以将此代码放在名为 Shapes.cs 或 DateTimeShapes.cs 的 class 中(不是必需的,但与 Orchard 有某种约定)
然后您可以像这样在您的视图中使用它:
@{
var date = DateTime.Now;
}
@Display.DateTimeRelative(date)
我刚刚学习 Orchard CMS,但在不创建一整套模型、驱动程序等的情况下,无法对 return 一些任意文本实施形状方法
我正在尝试使用 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");
}
但是,我不完全确定它应该去哪里。我试过将它放在控制器和模型中,但结果不成功。
所以,我的问题是,这段代码应该放在哪里?从模板调用它的正确方法是什么?
您可以将此代码放在名为 Shapes.cs 或 DateTimeShapes.cs 的 class 中(不是必需的,但与 Orchard 有某种约定)
然后您可以像这样在您的视图中使用它:
@{
var date = DateTime.Now;
}
@Display.DateTimeRelative(date)