5

私はいくつかのフィールドを持つ FormView を持っています。これらのフィールドは、次のように asp.net バリデーターによって検証する必要があります。

<asp:FormView ID="OrderDetails" runat="server" DataKeyNames="ID" DataSourceID="DS_Order" DefaultMode="Edit" AutoGenerateRows="false" ClientIDMode="Static" RenderOuterTable="false">
    <EditItemTemplate>
        <asp:TextBox ID="EinkaufsauftragsNr" runat="server" ClientIDMode="Static" Text='<%# Bind("EinkaufsauftragsNr") %>'/>
        <asp:CompareValidator runat="server" Operator="DataTypeCheck" Type="Integer" ValidationGroup="EditValidation" Display="Dynamic"
                                    ControlToValidate="EinkaufsauftragsNr" ErrorMessage="Nur Ganzzahlen erlaubt." CssClass="validator" />
        .....
    </EditItemTemplate>
</FormView>

しかし、これを実行すると、「入力パラメーター 'controlId' を空の文字列にすることはできません」というメッセージが表示されます。バリデーターを削除すると、エラーメッセージも消えます。

ネットでこの問題を検索した後、フォームビュー内にコントロールが見つからないことが問題だと思ったので、そこに clientidmode="static" を配置しました->しかし、それで問題は解決しませんでした。これを解決する方法について他に何か提案はありますか?

4

1 に答える 1

9

ID を CompareValidator コントロールに割り当てていません。have to assign ID to asp:CompareValidator

変化する

<asp:CompareValidator runat="server" Operator="DataTypeCheck"
    Type="Integer" ValidationGroup="EditValidation" Display="Dynamic"
    ControlToValidate="EinkaufsauftragsNr" ErrorMessage="Nur Ganzzahlen erlaubt."
    CssClass="validator" />

<asp:CompareValidator ID="SomeID" runat="server" Operator="DataTypeCheck"
    Type="Integer" ValidationGroup="EditValidation" Display="Dynamic"
    ControlToValidate="EinkaufsauftragsNr" ErrorMessage="Nur Ganzzahlen erlaubt."
    CssClass="validator" />
于 2012-11-28T14:58:34.157 に答える