Ajouter la classe css à Html.EditorFor dans MVC 2

J’essaie d’append une classe css à une zone de texte. C’est ce que j’ai à mon avis:

 m.StartDate) %> 

J’ai essayé de suivre les instructions sur ce lien en faisant mon code:

  m.StartDate, new { @class: "datepicker" }) %> 

Mais je reçois une erreur de compilation disant:

Erreur de syntaxe, ‘,’ prévu

Que fais-je mal ici?

Je suggère fortement d’utiliser les modèles de l’éditeur . C’est certainement la “bonne” manière de styliser votre EditorFor.

Vous pouvez demander à une propriété de modèle d’utiliser un modèle d’éditeur de deux manières différentes.

Le premier (le plus simple) consiste à créer un modèle d’éditeur pour un certain type de données – DateTime par exemple.
La deuxième façon de le faire est de la définir de manière déclarative dans vos DataAnnotations en utilisant un UIHint .

modifier
Je voudrais également append que vous devez utiliser le type “date” dans votre champ de saisie de sorte que même lorsque JavaScript est désactivé, votre utilisateur peut toujours voir un datepicker natif (uniquement valide sur les navigateurs HTML5 modernes)

Avec MVC3, je n’arrêtais pas de me cogner la tête parce que je ne pouvais pas faire fonctionner cela. Je ne voulais pas créer un EditorTemplate complet pour simplement append une classe.

Eh bien, au lieu d’utiliser EditorFor, utilisez TextBoxFor , avec bien sûr le signe égal comme ceci:

 @Html.TextBoxFor(m=> m.ZipCode, new { @class = "zip" }) 

Je suppose qu’un moyen rapide et sale de le faire serait dans jQuery, oui?

 $(document).ready(function () { $('#StartDate').addClass('datepicker'); }); 

Idéalement, vous devriez utiliser les modèles d’éditeur. J’ai contourné ce problème en utilisant le modèle de l’éditeur dans le fichier MvcHtmlSsortingng.Create () qui vous permettra de reconstruire le code HTML réel. Bien sûr, vous voudrez tout copier dans la section “class” pour conserver le modèle d’éditeur aussi utile que possible.

J’ai essayé plusieurs des suggestions ci-dessus, mais finalement, je me suis posé la question, car je pense que c’est moins compliqué et que cela me permet de continuer à utiliser les templates de l’éditeur:

 @MvcHtmlSsortingng.Create(Html.EditorFor(m => m.StartDate).ToSsortingng().Replace("class=\"text-box single-line\"", "class=\"text-box single-line datepicker\"")) 

Il n’y a pas de surcharge pour EditorFor qui vous permet de définir HtmlProperties. (IDictionary htmlAtsortingbutes)

Ce lien explique comment faire:

http://aspadvice.com/blogs/kiran/archive/2009/11/29/Adding-html-atsortingbutes-support-for-Templates- 2D00 -ASP.Net-MVC-2.0-Beta_2D00_1.aspx

Je sais que c’est une vieille question mais j’ai pensé que je pouvais y consortingbuer. J’ai eu le même problème et je voulais éviter de créer des modèles d’éditeur. Je voulais juste une solution générique pour gérer tout ce qui me permettrait de spécifier des atsortingbuts HTML lors de l’utilisation de Html.EditorFor dans une vue.

J’ai vraiment aimé la réponse de la CIA, mais j’ai développé un peu pour que vous puissiez transmettre tous les atsortingbuts dont vous avez besoin. J’ai créé une méthode Html.EditorFor supplémentaire qui accepte les atsortingbuts html: –

 public static class EditorForExtentions { public static MvcHtmlSsortingng EditorFor(this HtmlHelper html, Expression> expression, Object htmlAtsortingbutes, bool extendAtsortingbutes) { ssortingng value = html.EditorFor(expression).ToSsortingng(); PropertyInfo[] properties = htmlAtsortingbutes.GetType().GetProperties(); foreach (PropertyInfo info in properties) { int index = value.ToLower().IndexOf(info.Name.ToLower() + "="); if (index < 0) value = value.Insert(value.Length - (value.EndsWith("/>") ? 2 : 1), info.Name.ToLower() + "=\"" + info.GetValue(htmlAtsortingbutes, null) + "\""); else if (extendAtsortingbutes) value = value.Insert(index + info.Name.Length + 2, info.GetValue(htmlAtsortingbutes, null) + " "); } return MvcHtmlSsortingng.Create(value); } } 

Vous pouvez l’appeler dans une vue comme celle-ci

 <%=Html.EditorFor(m => m.StartDate, new { @class = "datepicker" }, true)%> 

Il utilise la méthode Html.EditorFor normale pour obtenir la chaîne HTML, puis injecte les atsortingbuts HTML nécessaires.

Je cherchais une solution pour appliquer un style à une boîte spécifique générée par la méthode @ HTML.EditorFor helper.

La question portait sur la définition d’une classe CSS pour @ HTML.EditorFor, mais pour quiconque souhaite modifier le style d’ un seul élément, vous pouvez, par exemple, essayer ceci:

Dans mon bloc, j’ai ajouté un style basé sur l’ID généré par l’assistant: ..

  

et puis sur ma page (je le fais dans une vue partielle):

 @Html.EditorFor(e => e.EnrollmentInfo.Format) 

Voici une solution très simple: Supprimez les guillemets de "datepicker" et retapez-les dans Visual Studio.

J’ai eu le même problème. J’ai copié / collé un exemple de code à partir du Web et le code contenait un type de citation spécial qui provoquait le problème de syntaxe "," . Je sais que ce n’est vraiment pas évident.