Comment puis-je remplacer le @Html.LabelFor modèle?
J'ai un simple champ de formulaire
<div class="field fade-label">
@Html.LabelFor(model => model.Register.UserName)
@Html.TextBoxFor(model => model.Register.UserName)
</div>
et il en résulte:
<div class="field fade-label">
<label for="Register_UserName">Username (used to identify all services, from 4 to 30 chars)</label>
<input type="text" value="" name="Register.UserName" id="Register_UserName">
</div>
mais je veux que LabelFor
code ajouter un <span>
à l'intérieur afin que je puisse avoir:
<label for="Register_UserName">
<span>Username (used to identify all services, from 4 to 30 chars)</span>
</label>
Comment puis-je faire cela?
Tous exemples utilisation EditorTemplates
mais c'est un LabelFor
.
- Ceci causera un ambiguë appel d'exception depuis la signature est identique à l'existant de la méthode d'extension. Il n'y a aucune justification des méthodes d'extension.
- il n'y a pas d'extension avec de tels paramètres, vous êtes sûr d'utiliser le code dans ma réponse, n'oubliez pas, c'est
LabelFor
pasEditorFor
. - Oui, vous avez raison. Ce que j'aurais dit, c'est que vos méthodes ne remplace pas le @Html.LabelFor(modèle => le modèle.Vous inscrire.Nom d'utilisateur) construire. Si vous essayez d'ajouter une surcharge avec cette signature, vous obtiendrez un ambiguë appel d'exception, que je l'ai testé. Votre solution est bonne, mais il vous oblige à changer le invoquant le code (les vues).
- Comment fais-tu pour remplacer le "normal" LabelFor méthode?
- Veuillez déplacer votre édité solution dans une réponse réelle ci-dessous.
Vous devez vous connecter pour publier un commentaire.
Vous ferais par de la création de votre propre helper HTML.
http://www.asp.net/mvc/tutorials/creating-custom-html-helpers-cs
Vous pouvez afficher le code de LabelFor<> par télécharger les sources pour ASP.Net MVC et le modifier en tant que helper personnalisé.
Réponse ajouté par balexandre
LabelFor est une extension de la méthode (statique) et, par conséquent, ne peut pas être remplacée. Vous auriez besoin de créer votre propre code Html Helper Extension de la méthode pour obtenir ce que vous désirez.
J'ai agrandi balealexandre réponse et ajouté dans la possibilité de spécifier HTML pour inclure à la fois avant et après le texte de l'étiquette. J'ai ajouté un tas de méthode les surcharges et les commentaires. J'espère que cela aide les gens!
Aussi accroché des informations à partir d'ici: Html à l'intérieur étiquette en utilisant le helper Html