剃刀 – 我应该在ASP.NET MVC 3中放置声明式HTML助手

前端之家收集整理的这篇文章主要介绍了剃刀 – 我应该在ASP.NET MVC 3中放置声明式HTML助手前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在 ScottGu’s Razor post中指定一个声明性的HTML帮助器,但我没有太多的运气.我试图在Views / Helpers中放置一个带有DateTimeHelper的Helpers.cshtml文件,但是它不会被接受,所以我在AppCode中尝试使用 the MVC 3 Beta post.现在它选择它,但是当我尝试在一个文件中使用它所以:

@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中使用“@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!")

猜你在找的asp.Net相关文章