0

ASP:CompareValidatorを実装していますが、期待どおりに機能していません。

フォームにはASP:DropDownListがあり、DropDownの項目の1つは次のとおりです。

<Please select a class>

そのテキストには、アングルブレーキも含まれています。

ドロップダウンが表示されている間はデータが保存されないように、ユーザーがドロップダウンから何かを選択するようにします。

<Please select a class>

マークアップを確認して、ユーザーが[更新]ボタンをクリックしたときに検証エラーメッセージが表示される理由を教えてください。

<asp:TemplateField HeaderText="Class:">
    <EditItemTemplate>
        <asp:DropDownList 
            ID="DropDownListClass" 
            Runat="server"
            DataSourceID="SqlDataSourceClasses"
            DataTextField = "ClassName"
            DataValueField="ID"
            SelectedValue='<%# Bind("ClassID") %>'
            ForeColor="Blue">
        </asp:DropDownList>

        <asp:CompareValidator 
            runat="server" 
            id="ClassMustBeSelected" 
            controltovalidate="DropDownListClass" 
            ValueToCompare="<Please select a class>"
            operator="Equal" 
            type="String" 
            errormessage="Please select a class!">
        </asp:CompareValidator>
    </EditItemTemplate>
</asp:TemplateField>

ドロップダウンの値は、次のデータソースからのものです。

<asp:SqlDataSource 
    ID="SqlDataSourceClasses" 
    runat="server" 

    ConnectionString="<%$ ConnectionStrings:Knowledge Academy %>" 

    SelectCommand=
        "SELECT '' AS ID, '<Please select a class>' AS ClassName, '' AS Grade
   UNION SELECT ID, ClassName + ' *** Grade: ' + Grade AS ClassName, Grade 
           FROM Classes
       ORDER BY 2, 3">
</asp:SqlDataSource>
4

1 に答える 1

2

フォームを送信する前に値を持たなければならないフィールドは、必須のフィールドバリデーターを使用する必要があります。

http://msdn.microsoft.com/en-us/library/e78xxk8k(v=VS.71).aspx

マイクロソフトからの次の点に注意してください

注入力コントロールが空の場合、検証関数は呼び出されず、検証は成功します。RequiredFieldValidatorコントロールを使用して、ユーザーが入力コントロールをスキップできないようにします。

したがって、これを機能させるには、必須フィールドバリデーターと比較バリデーターの両方が必要です(ただし、通常はリストを空白のまま(未選択)にして、必須フィールドバリデーターを使用するのが通常です。

于 2012-12-14T17:56:30.420 に答える