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

发布于 2024-11-08 22:55:47 字数 1388 浏览 0 评论 0原文

我一直在 Razor 中基于 Scott Gu 的帖子,一切进展顺利。

不过,我想知道是否可以从另一个 @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));
}

编译并运行正常,但在渲染时,它仅显示为不可为 null 的 DateTime 的空字符串。以下是调用 @helper 函数的标记。 Model.UpdateDate 是常规 DateTime ,而 Model.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 函数是通过从另一个调用它来实现的吗?

I've been implementing some @helper functions in Razor based on Scott Gu's post, and things are going pretty well.

What I was wondering though, is if it's possible to call one @helper from another. For example, I have the following helper that displays date and time for a DateTime?:

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

This works fine, but in some situations I have other fields that are not nullable, so I tried adding this to keep things DRY:

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

This compiles and runs OK, but when it renders it just shows as an empty string for the non-nullable DateTime. Here's the markup that calls the @helper functions. Model.UpdateDate is a regular DateTime and Model.LastRun is a DateTime?

...
<tr>
    <td>Last updated </td>
    <td class="value-field">@Helpers.DateTimeDisplay(Model.UpdateDate)</td>
</tr>
<tr>
    <td>Last run </td>
    <td class="value-field">@Helpers.DateTimeDisplay(Model.LastRun)</td>
</tr>
...

Is there a way to render one @helper function by calling it from another?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

[旋木] 2024-11-15 22:55:47

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

You need to write @DateTimeDisplay(...) to print the return value to the page.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文