2008-10-29 10 views
13

Używam kilku wariantów kontrolek sprawdzania poprawności (RequiredFieldValidator, CompareValidator, itp.) I używam właściwości CssClass walidatora. Widzę (przez Firebug), że klasa jest stosowana, ale sama kontrolka walidatora dodaje do niej element stylu, a mianowicie kolor: czerwony. Ale nie chcę tego. Chcę, żeby kontrola używała tylko cssclass.Domyślny styl Walidatora ASP.Net

Wiem, że mogę przesłonić atrybut Forecolor, ale będę musiał to zrobić na każdym walidatorze w projekcie. Naprawdę chciałbym po prostu zmienić swoją klasę CSS w moim arkuszu stylów na wypadek, gdybyśmy musieli zmienić wszystkie wyświetlenia komunikatów o błędach w przyszłości.

Ktoś ma jakieś wskazówki, jak powiedzieć kontrolerowi walidatora, aby NIE używał swoich domyślnych stylów?

Odpowiedz

13

Można to zrobić w pliku css:

.validator 
{ 
    color: blue !important; 
} 

ten zastąpi inline czerwony styl.

+1

Doskonały. To działało w IE6 i FF3. Nie mogę przetestować innych bez uprzedzenia, ale to doprowadzi mnie do testów. Nigdy nie myślałem o ważnej rzeczy. Dla każdego, kogo to obchodzi, klasa .validator, o której wspomniał, może być wszystkim - moja nazywa się .error_text –

+4

To jest ładny przykład ssania ASP.NET. Używanie '! Important' tylko dlatego, że ASP.NET przesuwa na ciebie" style = "color: Red" '. –

+12

FYI. Od wersji ASP.NET 4.0: * Klasa bazowa BaseValidator i kontrolki sprawdzania poprawności, które z niego pochodzą, nie renderują już domyślnie czerwonego tekstu. * (Pod warunkiem, że controlRenderingCompatibilityVersion nie ma wartości "3.5"). –

1

Przeglądałeś tematy?

+0

Nie. Czy wiesz, że to zadziała, czy może uważasz, że to dobre miejsce na rozpoczęcie? –

+0

Myślę, że to może być jedno miejsce na rozpoczęcie. Ale odpowiedź Keltex wygląda na prostszą. –

+0

Dzięki Ken. Rozwiązanie Keltexa wydaje się działać (przynajmniej na FF3 i IE6 w WinXP). –

3

Jeśli używasz motywów, możesz skonfigurować plik skóry, aby kontrolować wygląd weryfikatora. Problem z inline Forecolor polega na tym, że sposób .Net renderuje domyślne elementy sterujące, wstawia atrybut color = "# ...", który zastępuje CSS na poziomie elementu. Jeśli powyższe rozwiązanie Keltex nie dostarczy Ci za pomocą ważnej dyrektywy, twoim następnym krokiem będzie prawdopodobnie użycie/adaptacja/pomoc w pracy nad projektem CSS-Friendly Adapters http://www.asp.net/CSSAdapters/.

Bezwstydna wtyczka: Brian DeMarzo pracuje nad rozszerzeniem tego projektu w Google Code.

+0

Dobra rada, ale błędny link (o ile mógł powiedzieć). Czy miałeś na myśli: http://www.codeplex.com/cssfriendly? – CMPalmer

+0

Dzięki. Zmieniono, tak jak wskazywałem na oryginalną wersję po open-source (!) Firmy Microsoft, ale twoja też jest dobra. –

+0

Używanie motywów będzie działać; Zrobiłem to wiele razy, aby nadpisać wartości domyślne .NET. (Czerwony często jest właściwą odpowiedzią, ale nie zawsze!) –

9

Możesz zmienić domyślny styl weryfikatorów przy użyciu kompozycji.

  • Kliknij prawym przyciskiem myszy na stronie internetowej w Visual Studio
  • Wybierz "Add ASP.NET Folder"
  • Wybierz "Tematy", nazwę nowego folderu "DefaultTheme"
  • utworzyć plik o nazwie „Controls. skóra”w folderze DefaultTheme

Dodaj poniższe linie do pliku 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" /> 

Merge następujące do swojej web.config:

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

Następnie można ustawić niezależnie od koloru chcesz za .validation-error w plikach CSS.

(Należy zwrócić uwagę, że wersje ASP.Net przed 4.0 używały domyślnie style="Color:red" dla wszystkich walidatorów, co utrudnia nadpisanie ich kolorów w CSS. Jeśli okaże się, że ma to wpływ na Ciebie, możesz go przesłonić, ustawiając ForeColor właściwość każdego z powyższych elementów motywu lub dodaj !important do reguły CSS.)

Patrz:

+0

To jest NAJLEPSZA odpowiedź zdecydowanie! –

0
Set Forecolor="" 

I

CssClass="your-css-class" 
Powiązane problemy