【问题标题】:Where should I place Declarative HTML helpers in ASP.NET MVC 3在 ASP.NET MVC 3 中我应该在哪里放置声明性 HTML 帮助程序
【发布时间】:2010-10-20 18:42:18
【问题描述】:

我正在尝试按照ScottGu's Razor post 中的说明创建一个声明性 HTML 帮助程序,但我运气不佳。我尝试在 Views/Helpers 中放置一个带有 DateTimeHelper 的 Helpers.cshtml 文件,但它不会拾取它,所以我按照the MVC 3 Beta post 在 App_Code 中进行了尝试。现在它捡起来了,但是当我尝试在这样的文件中使用它时:

@DateTimeHelper(DateTime.Now)

编译器抱怨 DateTimeHelper 不存在。

一些奇怪的事情: 如果我将文件重命名为 DateTime.cshtml,我会得到一个不同的错误,关于我的帮助程序中的特定代码。

为了完整起见,这里是助手的代码:

@helper DateTimeHelper(DateTime t, bool longDate = true, bool showTime = true, bool longTime = true) {
    <time datetime='@t.ToUniversalTime()'>
        @if(longDate) {
            if(showTime) {
                if(longTime) {
                    @t.ToLongDateString() @t.ToLongTimeString();
                } else {
                    @t.ToLongDateString() @t.ToShortTimeString();
                }
            } else {
                @t.ToLongDateString()
            }
        } else {
            if(showTime) {
                if(longTime) {
                    @t.ToShortDateString() @t.ToLongTimeString();
                } else {
                    @t.ToShortDateString() @t.ToShortTimeString();
                }
            } else {
                @t.ToShortDateString()
            }
        }
    </time>
}

帮助器在某个视图中使用如下:

@model dynamic

<div>
    <p> The current time is @DateTimeHelper(DateTime.Now)</p>
</div>

【问题讨论】:

    标签: razor asp.net-mvc-3


    【解决方案1】:

    要在 Razor 中使用“@helper”功能,您需要将 CSHTML 文件放在应用的 App_Code 文件夹中。 ASP.NET MVC 3 中没有“Views/Helpers”文件夹。ScottGu 的博客文章是在该功能完全实现之前写的,其中一些注释不再完全准确。

    要调用您编写的“@helper”,您必须在其中包含文件名和助手的名称。例如,如果你有这个助手:

    ~/App_Code/MyHelper.cshtml

    还有这个内容:

    @helper ShowStuff(string stuff) {
        <p>@stuff</p>
    }
    

    那你这样称呼它:

    @MyHelper.ShowStuff("some stuff!")
    

    【讨论】:

    • 这对于 MVC 3 RTW 仍然准确吗?
    • @Mike 是的,这仍然是正确的。我们将寻求在未来版本中支持 Razor 助手。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 1970-01-01
    • 2012-12-07
    • 2011-03-22
    • 1970-01-01
    相关资源
    最近更新 更多