这是我的 Web 表单控件的代码
<asp:TextBox runat="server" ID="txtUsername"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="txtUsername" runat="server" ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
<asp:CustomValidator OnServerValidate="checkUsername" ID="CustomValidator1" runat="server" ControlToValidate="txtUsername" EnableClientScript="true" ClientValidationFunction="checkUsername" ErrorMessage="CustomValidator"></asp:CustomValidator>
Run Code Online (Sandbox Code Playgroud)
客户端验证
<script type="text/javascript">
function checkUsername(source,args){
alert("test");
/* alert(args.Value);
args.IsValid=false;
*/
}
</script>
Run Code Online (Sandbox Code Playgroud)
服务器端验证
protected void checkUsername(object sender, System.Web.UI.WebControls.ServerValidateEventArgs e) {
String str=e.Value;
if(str.Length>6)
e.IsValid = false;
}
Run Code Online (Sandbox Code Playgroud)
但出于某种原因,这个 Costom 验证并没有被触发。任何线索?
编辑: 我第一次在 asp 中编码,服务器验证在代码隐藏类中
这是一个代码 asp.net 页面,也许我犯了一些小错误?
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Registration.aspx.cs" Inherits="lab1.Registration" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="Recreate table"
onclick="Button1_Click" />
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</div>
<script type="text/javascript">
function checkUsername(source,args){
args.IsValid=(args.Value.length<=6);
/* alert(source.Value);
args.IsValid=false;
alert(document.getElementById("txtUsername").nodeValue);*/
}
</script>
<asp:Table ID="Table1" runat="server" Height="106px" Width="469px">
<asp:TableRow>
<asp:TableCell>
<asp:Label runat="server" Text="Username"></asp:Label>
</asp:TableCell>
<asp:TableCell>
<asp:TextBox runat="server" ID="txtUsername"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="txtUsername" runat="server" ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
<asp:CustomValidator OnServerValidate="checkUsername" ID="CustomValidator1" runat="server" ControlToValidate="txtUsername" EnableClientScript="true" ClientValidationFunction="checkUsername" ErrorMessage="CustomValidator"></asp:CustomValidator>
</asp:TableCell>
</asp:TableRow>
</asp:Table>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
好的,尝试像这样改变你的两种方法。
<script type="text/javascript">
function checkUsername(source,args){
args.IsValid=(args.Value.length<=6);
}
</script>
Run Code Online (Sandbox Code Playgroud)
和
protected void checkUsername(object sender, System.Web.UI.WebControls.ServerValidateEventArgs e)
{
e.IsValid = (e.Value.Length <= 6);
}
Run Code Online (Sandbox Code Playgroud)
唯一真正的区别是它计算出 IsValid 的 true 和 false,而不是仅仅将其设置为 false。
如果这不是问题,那么请详细说明到底是什么不起作用。
编辑:只是添加到此...如果它只是您感兴趣的输入长度那么为什么不使用正则表达式验证器?
| 归档时间: |
|
| 查看次数: |
9970 次 |
| 最近记录: |