2008-10-29 71 views
13

我使用了Validator控件(RequiredFieldValidator,CompareValidator等)的幾個變體,並使用驗證程序的CssClass屬性。我可以看到(通過Firebug)該類正在被應用,但驗證器控件本身正在添加一個樣式元素,即color:red。但我不想那樣。我希望控件只能使用cssclass。ASP.Net驗證器默認樣式

我知道我可以覆蓋Forecolor屬性,但是我必須在項目中的每個驗證器上都這樣做。我真的希望能夠在我的樣式表中更改我的CSS類,以防將來改變所有的錯誤消息外觀。

任何人有任何線索如何告訴驗證控件不使用他們的默認樣式?

回答

13

你可以在你的CSS文件中做到這一點:

.validator 
{ 
    color: blue !important; 
} 

這將覆蓋內嵌紅色風格。

+1

非常好。這在IE6和FF3中起作用。我無法立即測試其他人,但這會讓我通過測試。我從來沒有想過要做這件重要的事情。對於任何關心的人來說,上面提到的.validator類可以是任何東西 - 我的名字叫做.error_text – 2008-10-29 18:55:02

1

你看過主題嗎?

+0

沒有。你知道這會起作用,還是你認爲這可能是一個開始的好地方? – 2008-10-29 16:17:15

+0

我認爲這可能是一個開始的地方。但凱爾泰克斯的答案看起來更簡單。 – 2008-10-29 16:42:58

+0

謝謝你。 Keltex的解決方案似乎可行(至少在WinXP的FF3和IE6上)。 – 2008-10-29 18:56:05

3

如果您使用主題,您可以設置您的皮膚文件來控制驗證器的外觀。 Forecolor內聯的問題在於.Net呈現默認控件的方式,它會插入一個color =「#...」屬性,該屬性在元素級別覆蓋CSS。如果Keltex的解決方案無法爲您提供!important指令,那麼您的下一步可能就是使用/調整/幫助在友善控制適配器項目http://www.asp.net/CSSAdapters/上工作。

無恥插件:Brian DeMarzo正致力於在Google Code上擴展此項目。

9

您可以使用主題更改驗證器的默認樣式。

  • 在Visual Studio中右鍵單擊該網站上
  • 選擇 「添加文件夾ASP.NET」
  • 選擇 「主題」,將新文件夾 「DefaultTheme」
  • 創建一個名爲「控制。皮膚」,在DefaultTheme文件夾

添加以下到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" /> 

合併以下到您的web.config

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

然後你可以設置你想要在你的CSS文件.validation-error任何顏色。 (請注意,4.0之前版本的ASP.Net在默認情況下將style="Color:red"應用於所有驗證器,因此很難在CSS中覆蓋它們的顏色。如果您發現這會影響到您,那麼您可以通過設置ForeColor屬性上面的每個主題元素,或將!important添加到您的CSS規則。)

參見:

0
Set Forecolor="" 

而且

CssClass="your-css-class"