ASP.NET MVC - 从另一个@helper调用Razor @helper

时间:2011-05-19 14:15:48

标签: c# asp.net-mvc asp.net-mvc-3 razor razor-declarative-helpers

我一直在基于Scott Gu's post在Razor中实现一些@helper函数,事情进展顺利。

我想知道的是,是否可以从另一个@helper调用一个DateTime?。例如,我有以下帮助器,显示@helper DateTimeDisplay(DateTime? date) { if (date.HasValue) { @date.Value.ToShortDateString()<br /> <text>at</text> @date.Value.ToShortTimeString() } else { <text>-</text> } } 的日期和时间:

@helper DateTimeDisplay(DateTime date)
{
    DateTimeDisplay(new DateTime?(date));
}

这很好用,但在某些情况下我还有其他不可空的字段,所以我尝试添加它以保持干燥:

DateTime

这会编译并运行OK,但是当它呈现时它只显示为非可空@helper的空字符串。这是调用Model.UpdateDate函数的标记。 DateTime是常规Model.LastRunDateTime?... <tr> <td>Last&nbsp;updated&nbsp;</td> <td class="value-field">@Helpers.DateTimeDisplay(Model.UpdateDate)</td> </tr> <tr> <td>Last&nbsp;run&nbsp;</td> <td class="value-field">@Helpers.DateTimeDisplay(Model.LastRun)</td> </tr> ...

@helper

有没有办法通过从另一个函数调用它来呈现一个{{1}}函数?

1 个答案:

答案 0 :(得分:23)

您需要编写@DateTimeDisplay(...)以将返回值打印到页面。