Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Razor 在ASP.NET MVC 3中,我应该在哪里放置声明性HTML帮助程序_Razor_Asp.net Mvc 3 - Fatal编程技术网

Razor 在ASP.NET MVC 3中,我应该在哪里放置声明性HTML帮助程序

Razor 在ASP.NET MVC 3中,我应该在哪里放置声明性HTML帮助程序,razor,asp.net-mvc-3,Razor,Asp.net Mvc 3,我正试图按照中的说明创建一个声明性HTML帮助程序,但运气不太好。我尝试将带有DateTimeHelper的Helpers.cshtml文件放在视图/Helpers中,但它无法获取该文件,因此我尝试按照在App_代码中使用。现在它会把它捡起来,但当我尝试在这样的文件中使用它时: @DateTimeHelper(DateTime.Now) 编译器抱怨DateTimeHelper不存在 有些奇怪的事情: 如果将该文件重命名为DateTime.cshtml,则会出现另一个错误,与我的助手中的特定代码有

我正试图按照中的说明创建一个声明性HTML帮助程序,但运气不太好。我尝试将带有DateTimeHelper的Helpers.cshtml文件放在视图/Helpers中,但它无法获取该文件,因此我尝试按照在App_代码中使用。现在它会把它捡起来,但当我尝试在这样的文件中使用它时:

@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>
}
@helper DateTimeHelper(DateTime t,bool longDate=true,bool showTime=true,bool longTime=true){
@如果(长日期){
如果(表演时间){
如果(长期){
@t、 ToLongDateString()@t.ToLongTimeString();
}否则{
@t、 ToLongDateString()@t.ToShortTimeString();
}
}否则{
@t、 ToLongDateString()
}
}否则{
如果(表演时间){
如果(长期){
@t、 ToSortDateString()@t.ToLongTimeString();
}否则{
@t、 ToShortDateString()@t.ToShortTimeString();
}
}否则{
@t、 ToSortDateString()
}
}
}
辅助对象在特定视图中使用,如下所示:

@model dynamic

<div>
    <p> The current time is @DateTimeHelper(DateTime.Now)</p>
</div>
@模型动态
当前时间为@DateTimeHelper(DateTime.Now)

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

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

~/App\u Code/MyHelper.cshtml

而这一内容:

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

这对MVC3RTW仍然准确吗?@Mike是的,这仍然正确。我们将期待在未来的版本中支持剃须刀助手。
@MyHelper.ShowStuff("some stuff!")