13

我一直在基于Scott Gu's post的Razor中实现一些@helper函数,事情进展得很顺利。ASP.NET MVC - 从另一个@helper调用Razor @helper

我想知道的是,如果可以从另一个@helper打电话。例如,我有以下的助手,显示日期和时间为DateTime?

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

这工作得很好,但在某些情况下,我有其他的字段不可为空,所以我尝试添加这让事情变得DRY :

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

这编译并运行正常,但是当它呈现它只是显示作为非可空DateTime一个空字符串。这是调用@helper函数的标记。 Model.UpdateDate是一个普通DateTimeModel.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功能?

+0

完全没有得到你的观点......你能改说你的问题吗?兹兹 – 2011-05-19 14:31:58

回答

23

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

+4

哈,当然,我不敢相信我错过了那个。谢谢! – ataddeini 2011-05-19 14:40:09

相关问题