2010-08-05 9 views
18

Ich möchte den Stil der "Editor für" Textbox von MVC ändern, insbesondere möchte ich die Textbox größer machen.asp.net mvc hinzufügen css zu editorfor?

Ich habe versucht, css ein paar Möglichkeiten, ohne Erfolg.

einschließlich:

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

und

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

Hilfe pls!

+0

möglich dup licate von [asp.net mvc 2 EditorFor() und HTML-Eigenschaften] (http://Stackoverflow.com/questions/1625327/asp-net-mvc-2-editorfor-and-html-properties) – RedFilter

+0

Ist EditorFor eine "Anforderung "Oder sind Sie offen für das Testen von' TextBoxFor'/'TextAreaFor'? –

+0

Ich kann nicht glauben, dass Sie das nicht auf eine ordentliche Weise tun können! –

Antwort

2

Versuchen Sie, diese

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

oder

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

Jetzt können Sie Ihre Attribute definieren, weil MVC weiß, welche Art (TextArea-) zu verwenden.

+2

Ich habe 1 abgelehnt, weil er ausdrücklich gesagt hat, dass er das EditorFor-Verhalten ändern wollte, nicht TextBoxFor. –

+0

Ich habe die ursprüngliche Frage kommentiert und gefragt, ob 'EditorFor' eine ** Anforderung ** ist. –

8

Robh,

ist es schwierig, aus Ihrer Frage wissen, ob Sie sich für eine ‚allgemeine‘ oder spezifische Lösung in Ihrem Projekt suchen. als solche werde ich die generische - arbeiten einmal, funktioniert überall Lösung.

Dies erfordert ein paar Schritte (Konvention über Konfiguration). im Grunde ist hier, was erforderlich ist:

  • neuen Ordner unter erstellen 'Aufrufe-> shared genannt Editor Vorlagen'
  • erstellen Sie eine neue usercotrol (ascx) -Dateien unter diesem genannten 'string.ascx'

jetzt, dass ascx Datei definieren gemäß:

<%@ 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> 

dies wird n make alle 'string' basierten EditorFor() -Aufrufe verwenden diese 'Vorlage'. Machen Sie einfach das Feld 'new-editor-field' für den gewünschten css-Stil für dieses Feld. Natürlich, kochen Sie nach Ihrer eigenen Anforderung (dh Sie wollen nicht die LabelFor Tat etc ..)

hoffe, dass dies hilft - tho ich muss sagen, dies ist nur eine von ein paar Möglichkeiten, dies zu tun (aber ist meine bevorzugte Art).

genießen

jim

0

Platz Ergebnis EditorFor in einem div mit einigem Klassenattribut auf, und innerhalb Stildefinition für diese Klasse verwenden! Wichtige Richtlinie zu zwingen, innerhalb dieses div gewünschter Werte zu etwas akzeptieren .

+1

Das hat bei MVC4 nicht funktioniert. Das Style-Attribut auf dem DIV dauert noch nicht. – atconway

0

die Sie interessieren,

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

von oben Link kopiert,

@model DateTime? 

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

Es funktioniert für mich ...

3

Vielmehr Ihr Eingabefeld als erforderlich, die Klasse direkt angewandt hat, können Sie die folgende verwenden:

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

was dazu führt, etwa die folgenden HTML

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

Dann nur die CSS-Regel verwenden um angemessen zu stylen

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

+0

Was ist, wenn Sie ein Framework mit vordefinierten Css-Klassen verwenden .. Sie müssen wirklich eine Klasse für den Editor hinzufügen (so scheint Textboxfor die Lösung zu sein.) – Jimmyt1988

Verwandte Themen