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 pas EditorFor.
  • 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.
InformationsquelleAutor balexandre | 2011-03-04