在formview中使用验证器时,输入参数'controlId'不能为空字符串

r3t*_*try 4 asp.net validation

我有一个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>
Run Code Online (Sandbox Code Playgroud)

但是当我执行它时,我得到:"输入参数'controlId'不能是空字符串." 当我删除验证器时,error-msg也会消失.

在网上搜索这个问题后,我认为问题是在formview中找不到控件,所以我把clientidmode ="static"放在那里 - >但这并没有解决我的问题.关于如何解决这个问题,您有什么其他建议吗?

Adi*_*dil 8

你没有为CompareValidator Control分配id 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" />
Run Code Online (Sandbox Code Playgroud)

<asp:CompareValidator ID="SomeID" runat="server" Operator="DataTypeCheck"
    Type="Integer" ValidationGroup="EditValidation" Display="Dynamic"
    ControlToValidate="EinkaufsauftragsNr" ErrorMessage="Nur Ganzzahlen erlaubt."
    CssClass="validator" />
Run Code Online (Sandbox Code Playgroud)