none
如何给GridView的CommandField的Link按钮类型设置回发前客户端输入验证 RRS feed

  • 问题

  • 现在用GridView控件完成数据编辑功能:

                    <asp:TemplateField HeaderText="权重" SortExpression="权重">
                        <EditItemTemplate>
                            <asp:TextBox runat="server" Text='<%# Bind("权重") %>' ID="TextBox1" TextMode="Number" min="0" max="255" step="1"></asp:TextBox>
                        </EditItemTemplate>
                        <ItemTemplate>
                            <meter value="<%#DataBinder.Eval(Container.DataItem, "权重") %>"  min="0" max="255" low="84" high="171"></meter>
                            <%#DataBinder.Eval(Container.DataItem, "权重") %>
                        </ItemTemplate>
                    </asp:TemplateField>
    
                    <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" ShowInsertButton="True" ShowHeader="True" ButtonType="Link"></asp:CommandField>

    注意到,在编辑模式下,输入框输入的数值要求是0~255的整数,这个输入验证应该在客户端完成,如果用户输入非法,就应该拒绝回发,而不是仍然回发而引起服务器端程序出错。但实验发现:

    当CommandField的ButtonType设为Link时,客户端不进行验证,无论输入是否合法都回发;如果输入非法,引起服务器端错误。
    当CommandField的ButtonType设为Button时,客户端将进行验证,仅回发合法输入;如果输入非法,客户端会提示错误,不引起服务器端出错。

    我不知道这是微软的疏忽还是有意为之,但我觉得没有道理Link就不能做客户端验证啊?

    2018年2月2日 3:23

答案

  • 你好,

    据我所知,TextBox的MAX和MIN验证使用的是HTML5的客户端验证和gridview没有关系。所以和微软的girdview无关。

    这个验证只有在button的type是submit的时候才有效果。

    你可以自己做一个测试:

            <div>
                   <asp:TextBox runat="server" Text='' ID="TextBox1" TextMode="Number" min="0" max="255" ></asp:TextBox>
                <asp:Button ID="Button1" runat="server" Text="Button"  />
                 <input  type="submit" value="submit" />
                <input  type="button" value="Nosubmit" />
            </div>

    你会发现只有input的type是submit的时候才会触发验证。

     


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年2月2日 6:32