2011-02-23 100 views
5

我有一個從服務器端加載的下拉列表。asp.net中下拉列表的驗證器

<asp:DropDownList ID="ddlOne" runat="server" CssClass="dropDrownClass" Width="80%"> 

在服務器端,裝載下拉後我加入

- 請選擇 -

我要確保,如果所選擇的比我想顯示錯誤信息。爲此,我寫了

<asp:CompareValidator ID="CompareValidator1" runat="server" 
          ControlToValidate="ddlOne" ValueToCompare="-- Please Select --" Operator="Equal" Type="String" ErrorMessage="CompareValidator"></asp:CompareValidator> 
         <asp:ValidatorCalloutExtender ID="ValidatorCalloutExtender1" TargetControlID="CompareValidator1" runat="server"> 
         </asp:ValidatorCalloutExtender> 

但是,無論何時我在下拉列表中選擇任何內容,它都會顯示錯誤消息。 當我改變了驗證,以

<asp:CompareValidator ID="CompareValidator1" runat="server" 
          ControlToValidate="ddlOne" ValueToCompare="0" Operator="Equal" Type="Integer" ErrorMessage="CompareValidator"></asp:CompareValidator> 

我收到錯誤信息上的每個選擇,除了第一個是 - 請選擇 - 。

請讓我知道如何驗證下拉列表中的拳頭項目

ISSUE 2

我的下拉列表[這是顯示錯誤「Carson63000」紅色下得到雙重的消息,一個]和一個彈出[驗證者呼叫]。同樣的信息。 我希望只有驗證器標註應該顯示消息。

回答

11

驗證器將比較下拉列表中所選項目的,而不是文本。最簡單的方法通常是爲「請選擇」項目的值設置一個空字符串,爲其他項目設置非空值,然後使用RequiredFieldValidator

此外,CompareValidatorValueToCompare="-- Please Select --"Operator="Equal"表示:檢查下拉的值,並驗證它等於「 - 請選擇 - 」;如果沒有,則顯示錯誤。這與你所需要的完全相反 - 如果你想採取使用CompareValidator的方法,你需要將操作員更改爲Operator="NotEqual"

+0

這是工作的罰款。謝謝。但是我收到了雙重信息。一個來自標註擴展程序,另一個來自下拉列表。我只想顯示一次消息。 – Chris 2011-02-24 13:55:37

+1

@Chris,恐怕我從來沒有使用過ValidatorCalloutExtender。這是一個ASP.NET AJAX的東西,對吧?你有沒有嘗試在DisplayValidator中添加Display =「None」? – Carson63000 2011-02-24 23:40:52

+0

注意,如果要比較的值是空字符串,則必須使用必需的字段驗證程序(請參閱http://msdn.microsoft.com/zh-cn/library/db330ayw(v=vs.71).aspx) – 2012-03-15 16:30:28

0

更改操作值:

<asp:CompareValidator ID="CompareValidator1" runat="server" 
    ControlToValidate="ddlOne" ValueToCompare="0" Operator="NotEqual" 
    Type="Integer" ErrorMessage="CompareValidator" />