剃刀 – 我应该在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,我会收到一个不同的错误,有关我的帮助器中的特定代码.

为了完整起见,这里是帮助程序的代码

  1. @helper DateTimeHelper(DateTime t,bool longDate = true,bool showTime = true,bool longTime = true) {
  2. <time datetime='@t.ToUniversalTime()'>
  3. @if(longDate) {
  4. if(showTime) {
  5. if(longTime) {
  6. @t.ToLongDateString() @t.ToLongTimeString();
  7. } else {
  8. @t.ToLongDateString() @t.ToShortTimeString();
  9. }
  10. } else {
  11. @t.ToLongDateString()
  12. }
  13. } else {
  14. if(showTime) {
  15. if(longTime) {
  16. @t.ToShortDateString() @t.ToLongTimeString();
  17. } else {
  18. @t.ToShortDateString() @t.ToShortTimeString();
  19. }
  20. } else {
  21. @t.ToShortDateString()
  22. }
  23. }
  24. </time>
  25. }

帮助者在这样的视图中使用:

  1. @model dynamic
  2.  
  3. <div>
  4. <p> The current time is @DateTimeHelper(DateTime.Now)</p>
  5. </div>

解决方法

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

调用您写的“@helper”,您必须同时包含文件名以及帮助器的名称.例如,如果你有这个帮手:

〜/ App_Code文件/ MyHelper.cshtml

而这个内容

  1. @helper ShowStuff(string stuff) {
  2. <p>@stuff</p>
  3. }

那么你就这么称呼:

  1. @MyHelper.ShowStuff("some stuff!")

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