textboxfor net mvc example asp asp.net-mvc-2 textinput class-attributes

asp.net-mvc-2 - net - label mvc example



Sobrescribir la clase en un `Html.EditorFor` (6)

por defecto con

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

la salida es:

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

Como puede ver, la entrada ya agrega un atributo de class . Bueno, esto no debería ser un problema, solo usa

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

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

esto arrojará el mismo código!

sin embargo, funciona bien con Html.TextAreaFor()

¿Cómo puedo eliminar el text-box single-line de una text-box single-line vez para que mis propias clases puedan ser agregadas? ¿Alguna plantilla de T4 que debería editar?

Gracias por toda la ayuda.


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. Restablételo a algo más sensato como 15em. La clase de línea única no parece estar definida en ningún lado.


Puede usar TextBoxFor en TextBoxFor lugar


No hay forma de personalizar el valor del atributo de clase emitida cuando se utilizan plantillas de editor EditorFor mediante el método EditorFor . Cifra el 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 )

Tienes dos opciones:

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

  2. Procese el resultado 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/"")) %>


En MCV 5.1 puede aprovechar htmlAttributes. Funciona de maravilla...

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


prueba este código

@Html.Raw( Html.EditorFor(m => m.DataInicial).ToString() .Replace( "/"text-box single-line/"", "/"form-control text-box single-line/""))


Tuve el mismo problema y no me gustó ninguna de las soluciones anteriores. También encontré una publicación similar aquí , pero tampoco me gustaron esas soluciones. Después de algunas herramientas, encontré algo que me gustaba, que me permitió continuar usando las plantillas de editor (que es algo que debe intentar aprovechar cada vez que pueda). Publiqué la solución aquí