2008-10-29 6 views
13

J'utilise plusieurs variantes des contrôles Validator (RequiredFieldValidator, CompareValidator, etc.) et j'utilise la propriété CssClass du validateur. Je peux voir (via Firebug) que la classe est appliquée, mais le contrôle du validateur lui-même y ajoute un élément de style, à savoir color: red. Mais je ne veux pas ça. Je veux que le contrôle utilise uniquement la classe CSS. Je sais que je peux remplacer l'attribut Forecolor, mais je devrai le faire sur chaque validateur dans le projet. Et j'aimerais vraiment pouvoir changer ma classe CSS dans ma feuille de style au cas où nous devions changer toutes les apparences de message d'erreur dans le futur. Tout le monde a des indices sur la façon de dire aux contrôles du validateur de ne pas utiliser leurs styles par défaut?Style de validateur ASP.Net par défaut

Répondre

13

Vous pouvez le faire dans votre fichier css:

.validator 
{ 
    color: blue !important; 
} 

Cela remplacera le style rouge en ligne.

+1

Excellent. Cela a fonctionné dans IE6 et FF3. Je ne peux pas tester les autres directement, mais cela me permettra de faire des tests. Je n'ai jamais pensé faire la chose importante. Pour quiconque s'en soucie, la classe .validator à laquelle il fait référence ci-dessus peut être n'importe quoi - la mienne est appelée .error_text –

+4

Ceci est un bel exemple de succion ASP.NET. Recours à l'utilisation de '! Important 'juste parce que ASP.NET pousse' style = "color: Red" 'sur vous. –

+12

FYI. Depuis ASP.NET 4.0: * La classe BaseValidator et les contrôles de validation qui en découlent ne rendent plus le texte rouge par défaut. * (À condition que controlRenderingCompatibilityVersion ne soit pas réglé sur "3.5") –

1

Avez-vous regardé des thèmes?

+0

Non. Savez-vous que cela fonctionnera, ou pensez-vous que ce pourrait être un bon point de départ? –

+0

Je pense que ce pourrait être un endroit pour commencer. Mais la réponse de Keltex semble plus simple. –

+0

Merci Ken. La solution de Keltex semble fonctionner (au moins sur FF3 et IE6 dans WinXP). –

3

Si vous utilisez des thèmes, vous pouvez configurer votre fichier skin pour contrôler l'apparence de votre validateur. Le problème avec Forecolor inline est que la façon dont .Net rend les contrôles par défaut, il insère un attribut color = "# ..." qui remplace CSS au niveau de l'élément. Si la solution de Keltex ci-dessus ne vous convient pas avec la directive! Important, votre prochaine étape est probablement d'utiliser/adapter/aider à travailler sur le projet CSS-Friendly Control Adapters au http://www.asp.net/CSSAdapters/.

Prise sans vergogne: Brian DeMarzo travaille à étendre ce projet à Google Code.

+0

Bon conseil, mais mauvais lien (pour autant que je pourrait dire). Vouliez-vous dire: http://www.codeplex.com/cssfriendly? – CMPalmer

+0

Merci. Edité, comme je le montrais à la version originale après Microsoft open-sourced (!), Mais le vôtre est bon, aussi. –

+0

L'utilisation de thèmes fonctionnera; Je l'ai fait plusieurs fois pour remplacer les paramètres par défaut de .NET. (Le rouge est souvent la bonne réponse, mais pas toujours!) –

9

Vous pouvez modifier le style par défaut des validateurs à l'aide de thèmes.

  • Faites un clic droit sur le site dans Visual Studio
  • Choisissez "Ajouter le dossier ASP.NET"
  • Choisissez "Thèmes", nommez le nouveau dossier "DefaultTheme"
  • Création d'un fichier appelé « Controls. peau » dans le dossier DefaultTheme

Ajoutez ce qui suit au fichier 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" /> 

Fusionner les éléments suivants dans votre web.config:

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

vous pouvez définir la couleur que vous voulez pour .validation-error dans vos fichiers CSS.

(Notez que les versions d'ASP.Net antérieures à la version 4.0 appliquaient style="Color:red" à tous les valideurs par défaut, ce qui rendait difficile le remplacement de leurs couleurs en CSS. ForeColor propriété sur chacun des éléments de thème ci-dessus, ou ajouter !important à votre règle CSS.)

Voir:

+0

Ceci est la meilleure réponse de loin! –

0
Set Forecolor="" 

Et

CssClass="your-css-class" 
Questions connexes