2010-10-20 25 views
14

'da Bildirici HTML yardımcılarını nereye yerleştirmeliyim ScottGu's Razor post numaralı belgede belirtildiği gibi bir bildirim HTML Yardımcısı yapmaya çalışıyorum, ancak fazla şansım yok. Görünümler/Yardımcılar'da bir DateTimeHelper ile bir Helpers.cshtml dosyası koymayı denedim ancak onu almazdım, bu yüzden App_Code'da the MVC 3 Beta post'a göre denedim. Şimdi onu alır, ama ben böyle bir dosyaya kullanmaya çalıştığınızda:ASP.NET MVC 3

@DateTimeHelper (DateTime.Now)

derleyici DateTimeHelper var olmadığını şikayet ediyor.

Bazı garip şeyler: Dosyayı DateTime.cshtml olarak yeniden adlandırırsam, farklı bir hata alırım, yardımcı kodumdaki belirli bir kodla ilgili bir şey.

tamlık hatırına

, burada Yardımcısı'nın kod:

yardımcı böyle belli görünümde kullanılan
@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> 

cevap

23

Razor sen '@helper' özelliğini kullanmak için CSHTML dosyasını uygulamanızın App_Code klasörüne yerleştirmeniz gerekir. özellik tam olarak uygulanması önce yazılmış ASP.NET MVC 3. ScottGu blog yayınını hayır "Görüntüleme/Yardımcılar" klasörü vardır ve notların bazı artık tamamen doğru yoktur.

Eğer dosya yanı sıra, içinde yardımcı ismini de içermek zorundadırlar yazdığı "@helper" çağırın. Örneğin, bu yardımcı varsa:

~/App_Code/MyHelper.cshtml

Ve bu içeriğin:

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

Sonra şöyle diyoruz:

@MyHelper.ShowStuff("some stuff!") 
+0

Büyük, Mükemmel çalıştı. Teşekkürler! – Diego

+0

MVC 3 RTW için hala doğru mu? – Mike

+0

@Mike evet bu hala geçerli. Gelecek sürümde Razor yardımcılarını desteklemeye çalışacağız. – Eilon