Die*_*ego 14 razor asp.net-mvc-3
我正在尝试按照ScottGu的Razor帖子中的说明创建一个声明性的HTML Helper ,但我没有太多运气.我尝试在Views/Helpers中放置一个带有DateTimeHelper的Helpers.cshtml文件,但是它不会把它拿起来,所以我按照MVC 3 Beta帖子尝试了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>
}
Run Code Online (Sandbox Code Playgroud)
帮助程序在某个视图中使用,如下所示:
@model dynamic
<div>
<p> The current time is @DateTimeHelper(DateTime.Now)</p>
</div>
Run Code Online (Sandbox Code Playgroud)
Eil*_*lon 22
要在Razor中使用"@helper"功能,您需要将CSHTML文件放在应用程序的App_Code文件夹中.ASP.NET MVC 3中没有"Views/Helpers"文件夹.ScottGu的博客文章是在功能完全实现之前编写的,其中一些注释不再完全准确.
要调用您编写的"@helper",您必须包含文件名以及其中的帮助程序名称.例如,如果你有这个帮手:
〜/ App_Code文件/ MyHelper.cshtml
而这个内容:
@helper ShowStuff(string stuff) {
<p>@stuff</p>
}
Run Code Online (Sandbox Code Playgroud)
然后你这样称呼它:
@MyHelper.ShowStuff("some stuff!")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4426 次 |
| 最近记录: |