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

相關問題