ASP.NET MVC - вызов Razor @helper из другого @helper - PullRequest
13 голосов
/ 19 мая 2011

Я реализовал некоторые функции @helper в Razor на основе сообщения Скотта Гу , и дела идут довольно хорошо.

Что мне было интересно, так это возможность вызова одного @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.Вот разметка, которая вызывает функции @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>
...

Есть ли способ визуализации одной @helper функции путем вызова ее из другой?

1 Ответ

23 голосов
/ 19 мая 2011

Вам нужно написать @DateTimeDisplay(...), чтобы напечатать возвращаемое значение на странице.

...