2010-08-05 35 views
18

Me gustaría cambiar el estilo del cuadro de texto 'editor para' de MVC, específicamente quiero agrandar el cuadro de texto.asp.net mvc agregar css a editorfor?

He intentado agregar CSS de algunas maneras, fue en vano.

incluyendo:

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

y

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

ayuda pls!

+0

posible DUP licate de [asp.net mvc 2 EditorFor() y propiedades html] (http://stackoverflow.com/questions/1625327/asp-net-mvc-2-editorfor-and-html-properties) – RedFilter

+0

Es EditorPara un "requisito "¿o está dispuesto a probar' TextBoxFor'/'TextAreaFor'? –

+0

¡No puedo creer que no puedas hacer esto de una manera ordenada! –

Respuesta

2

probar este

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

o

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

Ahora puede definir sus atributos porque MVC sabe qué tipo de uso (TextArea).

+2

Bajé la votación 1 porque dijo específicamente que quería cambiar el comportamiento del Editor, no TextBoxFor. –

+0

Hice un comentario sobre la pregunta original que preguntaba si 'EditorFor' como ** Requisito **. –

8

robh,

es difícil saber de su pregunta de si usted está buscando una solución 'genérico' o específica dentro de su proyecto. como tal, voy a abordar el genérico: funciona una vez, funciona en todas partes.

esto implica tomar algunos pasos (convención sobre la configuración). Básicamente esto es lo que se requiere:

  • Crear nueva carpeta bajo 'Vistas-> compartidos llamada editor de plantillas de'
  • crear un nuevo usercotrol (ascx) Archivos en el que llama 'string.ascx'

ahora, definir que ascx según:

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

esto le n Haga que todas las llamadas basadas en "cadenas" de EditorFor() usen esta "plantilla". simplemente haga que la clase 'new-editor-field' refleje su estilo CSS deseado para ese campo. obviamente, cocínelo según sus propios requisitos (es decir, puede que no desee utilizar LabelFor tat, etc.)

Espero que esto ayude, aunque tengo que decir que esta es solo una de las pocas maneras de hacerlo (pero es mi forma preferida).

disfrutar

Jim

0

resultado Lugar de EditorFor dentro de un div con algún atributo de clase en él, y en el interior definición de estilo para esta clase, se utiliza! Importante directiva para obligar a aceptar los valores deseados a cualquier cosa dentro de ese div .

+1

Esto no funcionó para mí en MVC4. El atributo de estilo en el DIV aún no toma. – atconway

0

Prueba de esto,

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

Copiado del enlace anterior,

@model DateTime? 

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

funciona para mí ...

3

En lugar de requerir el campo de entrada para que la clase se aplica directamente, se puede utilizar el siguiente:

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

que se traduce en más o menos el siguiente código HTML

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

Entonces sólo tiene que utilizar la regla CSS el estilo de manera apropiada

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

+0

¿Qué pasa si estás usando un framework con clases de Css pre-aprovisionadas ... realmente necesitas agregar una clase al editor para (entonces textboxfor parece ser la solución). – Jimmyt1988

Cuestiones relacionadas