Sto provando a creare un helper HTML dichiarativo come specificato in ScottGu's Razor post, ma non ho molta fortuna. Ho provato a mettere un file Helpers.cshtml con un DateTimeHelper in Views/Helpers ma non lo raccoglieva, quindi ho provato in App_Code come da the MVC 3 Beta post. Ora lo raccoglie, ma quando cerco di usarlo in un file in questo modo:Dove posizionare gli helper dichiarativi HTML in ASP.NET MVC 3
@DateTimeHelper (DateTime.Now)
Il compilatore si lamenta che DateTimeHelper non esiste.
Alcune cose strane: Se rinominare il file in DateTime.cshtml, ottengo un errore diverso, qualcosa sul particolare codice nel mio helper.
Per completezza, ecco il codice del aiutante:
@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>
}
L'aiuto viene utilizzato in una certa visione del genere:
@model dynamic
<div>
<p> The current time is @DateTimeHelper(DateTime.Now)</p>
</div>
Grande, quello ha funzionato perfettamente. Grazie! – Diego
È ancora accurato per MVC 3 RTW? – Mike
@Mike sì questo è ancora vero. Cercheremo di supportare gli helper di Razor in una versione futura. – Eilon