加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 23:39:31 所属栏目:asp.Net 来源:网络整理
导读:我试图在 ScottGu’s Razor post中指定一个声明性的HTML帮助器,但我没有太多的运气.我试图在Views / Helpers中放置一个带有DateTimeHelper的Helpers.cshtml文件,但是它不会被接受,所以我在AppCode中尝试使用 the MVC 3 Beta post.现在它选择它,但是当我尝试
我试图在 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!")

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读