Pregunta

por el defecto con

<%: Html.EditorFor(m => m.ConfirmationHeadline) %>

la salida es:

 <input type="text" value="" 
        name="ConfirmationHeadline" id="ConfirmationHeadline" 
        class="text-box single-line">

Como se puede ver, la entrada ya un atributo añade class. Bueno, esto no debería ser un problema, el uso justo

<%: Html.EditorFor(m => m.ConfirmationHeadline, new { @class="span-11 last"}) %>

y debería funcionar ... err ... pues no!

Esta es la salida exactamente el mismo código!

Sin embargo, bien trabaja con Html.TextAreaFor()

¿Cómo puedo eliminar la clase de text-box single-line ocurra aparecer por lo que mis propias clases podrían ser añadidos? cualquier T4 plantilla debería editado?

Gracias por toda la ayuda.

¿Fue útil?

Solución

No hay manera de personalizar el valor del atributo de clase emitida cuando utilizando una función de editor de plantillas a través del método EditorFor. Se códigos duros del valor de la clase (más información disponible aquí: http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-3-default-templates.html )

Existen dos opciones:

  1. Escriba su propia plantilla personalizada que soporta la funcionalidad adicional. Echa un vistazo aquí para más detalles: http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-4-custom-object-templates.html

  2. procesar la salida del método EditorFor:

 <%: new HtmlString(Html.EditorFor(m=>m.ConfirmationHeadline).ToString()
        .Replace("class=\"text-box single-line\"", 
                 "class=\"text-box single-line span-11 last\"")) %>

Otros consejos

En MCV 5.1 se puede tomar ventaja de htmlAttributes. Funciona como un encanto ...

@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control", placeholder = "Enter your Name" } })

asp.net mvc crea un archivo llamado site.css en la carpeta de contenido. Allí se puede ver que la clase de cuadro de texto se establece en un ancho de 30em por defecto. Restablecerla a algo más sano como 15em. La clase de una sola línea no parece ser definido en cualquier lugar.

Puede utilizar TextBoxFor lugar

Yo tenía el mismo problema y no me gustaba ninguna de las soluciones anteriores. También encontré un puesto similar aquí , pero no lo hice como esas soluciones tampoco. Después de un poco alrededor de utillaje, encontré algo que me gustaba, lo cual me permitió seguir utilizando el editor de plantillas (que es algo que se debe tratar de aprovechar siempre que pueda). He publicado la solución aquí

probar este código

@Html.Raw(
    Html.EditorFor(m => m.DataInicial).ToString()
    .Replace(
        "\"text-box single-line\"",
        "\"form-control text-box single-line\""))
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top