Lors de l'utilisation de Html.TextBoxFor, ajouter le nom du modèle en tant que préfixe d'id
J'ai une page asp mvc 3 projet Lorsque j'utilise
@Html.TextBoxFor(model => model.Name)
la TexBoxFor rendu
<input id="Name" name="Name" type="text" value="" />
mon modèle est "UserModel" :
[DisplayName("Name")]
public string Name{ get; set; }
Est-il un moyen d'ajouter le nom du modèle en tant que préfixe dans l'id? peut-être que certains attribuent?
Je veux que la zone de texte sera rendu de
<input id="UserName" name="UserName" type="text" value="" />
Si vous voulez qu'il soit appelé nom d'utilisateur dans la vue, pourquoi ne pas l'appeler nom d'utilisateur dans le modèle?
Je seconde Oyvind commentaire, pourquoi avoir une propriété, appelé Nom, décoré avec un attribut que les forces de "Nom", et pourtant, vous voulez qu'il est rendu comme "nom d'utilisateur"? Me semble étrange.
il est possible de changer le nom de la propriété, mais si il existe un moyen de mettre quelques attribut pour tout le html hrlpers donc c'était beaucoup mieux et plus facile.
Je seconde Oyvind commentaire, pourquoi avoir une propriété, appelé Nom, décoré avec un attribut que les forces de "Nom", et pourtant, vous voulez qu'il est rendu comme "nom d'utilisateur"? Me semble étrange.
il est possible de changer le nom de la propriété, mais si il existe un moyen de mettre quelques attribut pour tout le html hrlpers donc c'était beaucoup mieux et plus facile.
OriginalL'auteur Kobi | 2012-01-02
Vous devez vous connecter pour publier un commentaire.
Suffit d'Utiliser "Nom" au lieu de "nom"
WOW, j'ai essayé de remplacer le nom de l'attribut html et il ne fonctionnait pas à cause de la baisse des cas de nom. Je vous remercie.
OriginalL'auteur u_1958148
Si vous ne voulez pas avoir à rendre l'entrée comme décrit dans votre modèle, vous ne voulez probablement pas à l'aide de la
Html.TextBoxFor
helper.Essayer
Html.TextBox
à la place. Vous pouvez le fournir avec les valeurs exactes que vous cherchez:N'oubliez pas que vous pouvez également oublier les aides et utiliser le bon vieux html:
Avertissement: Lors de l'utilisation de ces méthodes et le modèle de classeur par défaut, la valeur de cette entrée ne sera pas lié de retour à votre modèle correctement lors de la soumission des données.
Les valeurs sont liées à des modèles basés sur les noms d'entrée. Donc, dans ce cas, le modèle de classeur ne sait pas que la valeur de "nom d'utilisateur" d'entrée correspond à la valeur de "Nom" sur le modèle.
OriginalL'auteur enoshixi
La TextBoxFor helper utilise l'expression lambda qui est passé en premier argument pour calculer le nom du champ de saisie. Donc, si vous voulez généré le champ de saisie d'être appelé
UserName
, il suffit de renommer le bien à votre modèle d'affichage:OriginalL'auteur Darin Dimitrov
Vous devez modifier votre nom d'Affichage de l'attribut de "Nom" "nom d'utilisateur".
Si vous le faites, vous obtiendrez ce que vous demandez.
OriginalL'auteur enorl76
Si j'ai bien compris votre question, vous voulez être en mesure de faire précéder une chaîne sur le Modèle du nom de la propriété.
Donc si vous êtes dans la vue "Compte", vous obtiendrez
tandis que dans la vue de "Test", vous obtiendrez
Si c'est le cas, je pense que votre meilleur pari est remplacer le PartialFor méthode d'extension, de la même manière comme cela est fait ici:
ASP.NET MVC vues partielles: entrée préfixes de nom
Dans cet exemple, il va rendre
OriginalL'auteur Kevin Farrugia
Vous pouvez écrire:
name
attribut Nom. Donc, ce n'est pas ce qu'il veut.Ce n'est pas un problème. Il peut écrire: @Html.TextBoxFor(modèle => le modèle.Nom, nouveau { @id = "nom d'utilisateur" ,@Nom = "nom d'utilisateur"})
C'est complètement faux! Vous ne pouvez pas remplacer
name
attribut lorsque vous travaillez avec html helpers commeTextBoxFor
. BTW, pour info, vous n'avez pas besoin@
escape char là. Vous utilisez@
escape char spécial C# des mots-clés commeclass
.j'ai besoin d'elle pour être rendu automatiquement, et je ne veux pas le changer à chaque point de vue à l'aide de cette propriété.
C'est exactement le même que le plus populaire (jusqu'à ce que je downvoted) réponse de user1958148 suggéré.
OriginalL'auteur Hadas