簡體   English   中英

asp:Repeater的OnItemCommand不使用驗證器

[英]OnItemCommand of asp:Repeater not working with validator

asp:Repeater OnItemCommand中的函數不是隨機工作的。 這是一個正常的編碼。

<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被解雇了,該功能運行良好。

問題是,如何保持驗證並使OnItemCommand的功能正常工作?

如果您希望即使驗證失敗也會發生回發,您可以禁用客戶端驗證:

<asp:RegularExpressionValidator ID="rvDecimal" runat="server" EnableClientScript="false" ... />
<asp:RequiredFieldValidator ID="rfd_input" runat="server" EnableClientScript="false" ... />

如果要查看每個字段旁邊的指示符,表明其數據無效,則驗證程序應具有Text屬性。

另一方面,如果需要失敗的驗證列表,可以向頁面添加ValidationSummary,並為每個驗證器添加ErrorMessage

最后,我通過在控件中添加CausesValidation="false"來解決問題。

<asp:LinkButton runat="server" ID="btn_button" CausesValidation="false">

這將跳過驗證觸發OnItemCommand的函數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM