web-dev-qa-db-fra.com

mVC 3 Html.EditorFor ajouter attribut HTML ne fonctionne pas

J'essaie d'ajouter un attribut HTML pour EditorFor

 @Html.EditorFor(model => model.UserName, new { style = "width: 100px" })

Mais de toute façon je reçois

<input id="UserName" class="text-box single-line" type="text" value="" name="UserName">
19
Hryhorii

EditorFor va écraser ces attributs. Voir Attributs HTML pour EditorFor () dans ASP.NET MVC pour des solutions de contournement.

Si tout ce que vous avez besoin de changer est l'affichage de la largeur et que vous ne vous fiez pas aux modèles d'éditeur, le correctif le plus simple consiste à utiliser TextBoxFor à la place.

 @Html.TextBoxFor(model => model.UserName, new { style = "width: 100px" })
16
DMulligan

J'ai eu le même problème et cela l'a résolu ...

<style type="text/css">
#UserName { 
    width: 100px; 
}
</style>

@Html.EditorFor(model => model.UserName)
7
BGTechie

@Html.EditorFor() décide dynamiquement du type de contrôle utilisé en fonction de l'élément de modèle.

Ces personnalisations fonctionnent avec @Html.LabelFor() de @Html.TextBoxFor(). Le code suivant a été testé et fonctionne correctement.

Rasoir:

@Html.LabelFor(model => model.UserName, null, new { style = "display: inline;" })
@Html.TextBoxFor(model => model.UserName, null, new { style = "display: inline;" })

HTML généré

<label style="display: inline;" for="UserName">
<input name="LastActivityDate" id="UserName" style="display: inline;" type="text" value=""/>

Veuillez noter que le deuxième argument passé est null, style est le troisième attribut. Si @Html.EditorFor() est indispensable, vous devez utiliser la classe CSS au lieu du style

@Html.EditorFor() sur MSDN

Note: Le code a été testé avec MVC4 et, espérons-le, valide pour MVC3 également

2
BiLaL

À la place d'utiliser 
@ Html.EditorFor (model => model.UserId) 
Utilisation
@ Html.TextBoxFor (model => model.UserId, new {@Value = "Prabhat"})

1
Prabhat

Pour ce que ça vaut, j'ai eu le même problème. Je l'ai résolu en utilisant une version légèrement différente de la solution de Narenda V. 

J'ai créé une classe comme celle-ci: (note - min-width au lieu de width)

.userName { min-width:40em; }

alors à mon avis:

@Html.EditorFor(model => model.UserName, new { @class = "userName" })

Quand je n'ai pas utilisé min-width, mais width, cela n'a pas fonctionné . Bob

0
Bob T

Si vous devez utiliser EditorFor et non pas TextBoxFor et si vous avez plusieurs éditeurs sur la page, il vous suffit de modifier la largeur de ceux-ci en particulier ... Le plus simple consiste à ajouter un style CSS à l'ID de classe tel quel:

<style type="text/css">
    input#UserName { width: 100px; }
</style>
0
Mike B