2008-10-29 14 views
13

Estoy usando varias variantes de los controles del Validador (RequiredFieldValidator, CompareValidator, etc.) y estoy usando la propiedad CssClass del validador. Puedo ver (a través de Firebug) que la clase se está aplicando, pero el control del validador está agregando un elemento de estilo, a saber, color: rojo. Pero no quiero eso. Quiero que el control use solo la clase css.Valor predeterminado del Validador de ASP.Net

Sé que puedo anular el atributo Forecolor, pero tendré que hacer eso en cada validador del proyecto. Y realmente me gustaría poder cambiar mi clase de CSS en mi hoja de estilos en caso de que tengamos que cambiar todas las apariencias de mensajes de error en el futuro.

¿Alguien tiene alguna pista sobre cómo decirle a los controles del Validator que NO utilicen sus estilos predeterminados?

Respuesta

13

Usted puede hacer esto en su archivo css:

.validator 
{ 
    color: blue !important; 
} 

Esto anulará el estilo en línea roja.

+1

Excelente. Eso funcionó en IE6 y FF3. No puedo evaluar a los demás de inmediato, pero esto me ayudará a hacer las pruebas. Nunca pensé en hacer lo importante. Para cualquiera que le importe, la clase .validator a la que se refiere anteriormente puede ser cualquier cosa, la mía se llama .error_text –

+4

Este es un buen ejemplo de succión de ASP.NET. Recurriendo al uso de '! Important' solo porque ASP.NET empuja' style = "color: Red" 'hacia ti. –

+12

FYI. A partir de ASP.NET 4.0: * La clase BaseValidator y los controles de validación que derivan de ella ya no representan el texto rojo de forma predeterminada. * (Siempre que controlRenderingCompatibilityVersion no esté configurado en "3.5") –

1

¿Has mirado los temas?

+0

No. ¿Sabes que funcionará, o crees que podría ser un buen lugar para comenzar? –

+0

Creo que podría ser un lugar para comenzar. Pero la respuesta de Keltex parece más simple. –

+0

Gracias Ken. La solución de Keltex parece funcionar (al menos en FF3 e IE6 en WinXP). –

3

Si usa temas, puede configurar su archivo de máscara para controlar el aspecto de su validador. El problema con Forecolor inline es que la forma en que .Net representa los controles predeterminados, inserta un atributo color = "# ..." que anula CSS en el nivel del elemento. Si la solución de Keltex anterior no la obtiene para usted con la directiva! Important, su siguiente paso es probablemente usar/adaptar/ayudar a trabajar en el proyecto de adaptadores de control amigables con CSS al http://www.asp.net/CSSAdapters/.

Conector Shameless: Brian DeMarzo está trabajando para extender este proyecto en Google Code.

+0

Buen consejo, pero enlace incorrecto (en cuanto a podría decir). ¿Quiso decir: http://www.codeplex.com/cssfriendly? – CMPalmer

+0

Gracias. Editado, ya que estaba apuntando a la versión original después de que Microsoft lo haya abierto (!), Pero el suyo también es bueno. –

+0

El uso de temas funcionará; Lo he hecho varias veces para anular los valores predeterminados de .NET. (El rojo suele ser la respuesta correcta, ¡pero no siempre!) –

9

Puede cambiar el estilo predeterminado de los validadores utilizando Temas.

  • Haga clic derecho en el sitio web en Visual Studio
  • seleccione "Agregar carpeta ASP.NET"
  • Elija "Temas", nombre del nuevo directorio "DefaultTheme"
  • crear un archivo llamado "Controles. la piel" en la carpeta DefaultTheme

Añadir lo siguiente al archivo Controls.skin:

<asp:RequiredFieldValidator runat="server" CssClass="validation-error" /> 
<asp:RangeValidator runat="server" CssClass="validation-error" /> 
<asp:CompareValidator runat="server" CssClass="validation-error" /> 
<asp:RegularExpressionValidator runat="server" CssClass="validation-error" /> 
<asp:CustomValidator runat="server" CssClass="validation-error" /> 
<asp:ValidationSummary runat="server" CssClass="validation-error" /> 

Combinar lo siguiente en su web.config:

<configuration> 
    <system.web> 
     <pages theme="DefaultTheme" /> 
    </system.web> 
</configuration> 

entonces se puede establecer cualquier color que desee para .validation-error en los archivos CSS.

(Tenga en cuenta que las versiones de ASP.Net antes 4.0 solían aplicar style="Color:red" a todos los validadores de forma predeterminada, por lo que es difícil sobrescribir sus colores en CSS. Si esto le afecta, puede anularlo configurando el ForeColor propiedad en cada uno de los elementos de tema anteriores, o agregue !important a su regla de CSS.)

Ver:

+0

¡Esta es la MEJOR respuesta de lejos! –

0
Set Forecolor="" 

Y

CssClass="your-css-class" 
Cuestiones relacionadas