J'essaie de créer une aide HTML déclarative comme spécifié dans ScottGu's Razor post, mais je n'ai pas beaucoup de chance. J'ai essayé de placer un fichier Helpers.cshtml avec un DateTimeHelper dans Views/Helpers mais il ne le ramasserait pas, donc j'ai essayé dans App_Code selon the MVC 3 Beta post. Maintenant, il le prend, mais lorsque je tente de l'utiliser dans un fichier comme ceci:Où dois-je placer des aides HTML déclaratives dans ASP.NET MVC 3
@DateTimeHelper (DateTime.Now)
Le compilateur se plaint que DateTimeHelper n'existe pas.
Certaines choses étranges: Si je renommer le fichier en DateTime.cshtml, j'obtiens une erreur différente, quelque chose à propos du code particulier dans mon assistant.
Par souci d'exhaustivité, voici le code de l'aide:
@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'aide est utilisé dans un certain point de vue comme celui-ci:
@model dynamic
<div>
<p> The current time is @DateTimeHelper(DateTime.Now)</p>
</div>
Grand, Cela a fonctionné parfaitement. Merci! – Diego
Est-ce encore exact pour MVC 3 RTW? – Mike
@Mike oui c'est toujours vrai. Nous chercherons à soutenir les assistants Razor dans une future version. – Eilon