15

Scott Guの投稿@helperに基づいて、Razorにいくつかの機能を実装してきましたが、状況はかなり順調に進んでいます。

私が疑問に思っていたのは、お互いに電話をかけることができるかどうかということ@helperです。たとえば、次のヘルパーがあり、:の日付と時刻を表示しますDateTime?

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

これは正常に機能しますが、状況によってはnull許容ではない他のフィールドがあるため、これを追加して、物事をドライに保つようにしました。

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

これはコンパイルして正常に実行されますが、レンダリングすると、null許容でない場合は空の文字列として表示されますDateTime。関数を呼び出すマークアップは次のとおりです@helperModel.UpdateDateは常連DateTimeModel.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>
...

@helper別の関数から呼び出すことによって1つの関数をレンダリングする方法はありますか?

4

1 に答える 1

27

@DateTimeDisplay(...)戻り値をページに出力するには、書き込む必要があります。

于 2011-05-19T14:33:27.720 に答える