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

ata*_*ini 13 c# asp.net-mvc razor razor-declarative-helpers asp.net-mvc-3

我一直@helper在基于Scott Gu的帖子在Razor中实现一些功能,事情进展顺利.

我想知道的是,是否有可能@helper从另一个人那里打电话.例如,我有以下帮助器,显示以下日期和时间DateTime?:

@helper DateTimeDisplay(DateTime? date)
{
    if (date.HasValue)
    {
        @date.Value.ToShortDateString()<br />
        <text>at</text> @date.Value.ToShortTimeString()
    }
    else
    {
        <text>-</text>
    }
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,但在某些情况下我有其他不可空的字段,所以我尝试添加这个以保持干燥:

@helper DateTimeDisplay(DateTime date)
{
    DateTimeDisplay(new DateTime?(date));
}
Run Code Online (Sandbox Code Playgroud)

这编译并运行正常,但是当它呈现时它只显示为非可空的空字符串DateTime.这是调用@helper函数的标记.Model.UpdateDate是一个常规的DateTime,Model.LastRun是一个DateTime?

...
<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>
...
Run Code Online (Sandbox Code Playgroud)

有没有办法@helper通过从另一个函数调用它来呈现一个函数?

SLa*_*aks 24

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

  • 哈,当然,我不敢相信我错过了.谢谢! (4认同)