转发器中必需的字段验证器

sum*_*mit 6 asp.net

我在转发器中有一个转发器控件和文本框.我想在文本框中有一个必需的字段验证器,我可以这样做吗

vol*_*pav 9

<asp:Repeater id="myRep" OnItemDataBound="rep_ItemDataBound" runat="server">
    <ItemTemplate>
        <asp:TextBox id="tx" runat="server" />
        <asp:RequiredFieldValidator id="myVal" ControlToValidate="tx" ErrorMessage="Required" runat="server" />
    </ItemTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)

UPDATE

将此添加到代码隐藏(也可以稍微修改标记以订阅事件,请参阅上文):

protected void rep_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
     RequiredFieldValidator val = (RequiredFieldValidator)e.Item.FindControl("myVal");
     TextBox tb = (TextBox)e.Item.FindControl("tx");

     val.ControlToValidate = tb.ID;
}
Run Code Online (Sandbox Code Playgroud)


小智 5

如果您希望通过单个按钮单击转发器中的所有文本框,那么就像这样简单

  <asp:Repeater ID="rpt" runat="server">
     <ItemTemplate>
        <asp:TextBox ID="txt" runat="server">
        </asp:TextBox>
        <asp:RequiredFieldValidator ID="rqf" ControlToValidate="txt" 
        ErrorMessage="*" ValidationGroup = "TestValidationGroup" runat = "server">
        </asp:RequiredFieldValidator>
    </ItemTemplate>
   </asp:Repeater>
   <asp:Button ID = "btnSubmit" runat = "server" ValidationGroup = "TestValidationGroup" />
Run Code Online (Sandbox Code Playgroud)

无需检查数据绑定或任何事件的任何事件.