2010-08-05 6 views
18

Je voudrais changer le style de la zone de texte 'éditeur pour' de MVC, en particulier je veux agrandir la zone de texte.asp.net mvc ajouter css à editorfor?

J'ai essayé d'ajouter css de plusieurs façons, en vain.

dont:

<td class="myCss"><%=Html.EditorFor(x => x.NickName)%></td> 

et

<td class="myCss"><%=Html.EditorFor(x => x.NickName, new { @class = "myCss" })%></td> 

aide pls!

+0

dup possible Licence de [Propriétés de EditorFor() et html pour asp.net mvc 2] (http://stackoverflow.com/questions/1625327/asp-net-mvc-2-editorfor-and-html-properties) – RedFilter

+0

Est-ce que EditorFor est une "exigence" "Ou êtes-vous prêt à essayer TextBoxFor' /' TextAreaFor'? –

+0

Je ne peux pas croire que vous ne pouvez pas le faire d'une manière ordonnée! –

Répondre

2

Essayez cette

<%= Html.TextBoxFor(x => x.NickName, new { @class = "myCss" })%> 

ou

<%= Html.TextAreaFor(x => x.NickName, new { cols = "40%", @class = "myCss" })%> 

Maintenant, vous pouvez définir vos attributs parce que MVC sait quel type d'utilisation (TextArea).

+2

Je downvoted 1 parce qu'il a spécifiquement dit qu'il voulait changer le comportement de EditorFor, pas TextBoxFor. –

+0

J'ai fait un commentaire sur la question originale demandant si «EditorFor» comme ** exigence **. –

8

robh,

il est difficile de savoir à partir de votre question de savoir si vous êtes à la recherche d'une solution « générique » ou spécifique dans votre projet. en tant que tel, je vais aborder le générique - fonctionne une fois, fonctionne partout solution. Ceci implique de prendre quelques étapes (convention par rapport à la configuration). essentiellement voici ce qui est nécessaire:

  • Créer un nouveau dossier sous 'vues-> partagé appelé Modèles de l'éditeur'
  • créer un nouveau fichier usercotrol (ascx) sous cette appelé 'string.ascx'

maintenant, définir ce fichier ascx selon:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<string>" %> 
<div class="editor-label"> 
    <%= Html.LabelFor(model => model) %> 
</div> 
<div class="new-editor-field"> 
    <%= Html.TextBoxFor(model => model) %> 
    <%= Html.ValidationMessageFor(model => model) %> 
</div> 

ce sera n ow faire tous les appels basés sur la chaîne 'EditorFor() utilisent ce' template '. faites simplement apparaître dans la classe 'new-editor-field' le style CSS que vous souhaitez pour ce champ. évidemment, cuisinez selon votre propre condition (c.-à-d. vous ne pouvez pas vouloir le tatouage de LabelFor etc.)

espérons que ceci aide - que je dois dire, c'est juste une de quelques manières de faire ceci (mais est mon manière préférée).

profiter

jim

0

Lieu résultat de EditorFor dans un div avec un attribut de classe sur elle, et à l'intérieur définition de style pour cette classe, utilisez! Importante directive pour forcer accepter les valeurs souhaitées à quoi que ce soit à l'intérieur que div .

+1

Cela n'a pas fonctionné pour moi dans MVC4. L'attribut de style sur le DIV ne prend toujours pas. – atconway

0

Essayez ceci,

https://stackoverflow.com/a/4249988/505474

Copié de lien ci-dessus,

@model DateTime? 

@Html.TextBox("", (Model.HasValue ? Model.Value.ToShortDateString() : string.Empty), new { @class = "datePicker" }) 

Il fonctionne pour moi ...

3

Plutôt que d'exiger de votre champ de saisie pour avoir la classe directement appliquée, vous pouvez utiliser les éléments suivants:

<div class="editor-field myCss"> 
    @Html.EditorFor(model => model.Nickname) 
</div> 

Quels sont les résultats à peu près le HTML

<div class="editor-field myCss"> 
    <input class="text-box single-line" data-val="true" id="Nickname" name="Nickname" type="text" value=""> 
</div> 

suivantes, il suffit d'utiliser la règle CSS pour styler correctement

.myCss input.text-box {font-size: 2em;}

+0

Et si vous utilisez un framework avec des classes Css pré-fournies, vous devez vraiment ajouter une classe à editorfor (donc textboxfor semble être la solution). – Jimmyt1988

Questions connexes