OnItemCommand
的{{1}}中的函数无法随机运行。这是一个正常的编码。
asp:Repeater
花了一些时间在调试上我发现它与页面上的输入文本框相关。
<asp:Repeater runat="server" ID="control01" OnItemCommand="control01_OnItemCommand">
<ItemTemplate>
<li><asp:LinkButton runat="server" ID="btn_button" CommandArgument='1'>Click</asp:LinkButton></li>
</ItemTemplate>
</asp:Repeater>
只有当它的值正确(经过验证)时,该功能才能正常工作。
如果我在此处的文本框中删除<asp:TextBox ID="txt_input" runat="server"></asp:TextBox>
和<asp:RequiredFieldValidator>
<asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="rvDecimal" ControlToValidate="txt_input" runat="server" ErrorMessage="Please enter a valid value" ValidationExpression="^(-)?\d+(\.\d\d)?$"></asp:RegularExpressionValidator>
<asp:RequiredFieldValidator ID="rfd_input" runat="server" ControlToValidate="txt_input" Text="Please enter a valid value"></asp:RequiredFieldValidator>
被解雇了,功能运行良好。
问题是,如何保持验证并使OnItemCommand
中的功能正常工作?
答案 0 :(得分:1)
如果您希望即使验证失败也会发生回发,您可以禁用客户端验证:
<asp:RegularExpressionValidator ID="rvDecimal" runat="server" EnableClientScript="false" ... />
<asp:RequiredFieldValidator ID="rfd_input" runat="server" EnableClientScript="false" ... />
如果要查看每个字段旁边的指示符,表明其数据无效,则验证程序应具有Text
属性。
另一方面,如果您需要失败的验证列表,可以向页面添加ValidationSummary,并为每个验证器添加ErrorMessage
。
答案 1 :(得分:1)
最后,我通过在控件中添加CausesValidation="false"
来解决问题。
<asp:LinkButton runat="server" ID="btn_button" CausesValidation="false">
这将跳过验证触发OnItemCommand