如何通过在ASP.NET中调用服务器端函数来应用客户端验证

时间:2012-04-25 13:14:36

标签: asp.net validation serverside-javascript

我有一个ASP.NET Web窗体应用程序。

我有FormTextBox,现在我有几个asp:RequiredFieldValidator链接到属于同一个ValidationGroup

现在我必须向某些TextBox申请额外的验证以及相关的错误消息。 具体来说,我要检查TextBox内的文字是否为Guid。 Morevoer此检查必须即时完成,这意味着只要用户从TextBox移动光标,就必须执行验证,而无需按提交。

  1. 如何从Javascript调用IsGuid(string guid)函数?

  2. 如何将两个不同的错误消息作为验证附加(例如,如果TextBox.Text不允许使用carachters并且长度

  3. ,我希望显示一条消息
  4. 使用 jQuery 或使用 ASP.NET验证程序实现此验证是否更容易?

  5. 如果其他人对其实施有任何其他想法,请随时提出建议。谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用ReqularExpressionValidator控件。

Here正则表达式

^(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}$

答案 1 :(得分:0)

您可以根据需要对同一个控件应用尽可能多的验证器,在本例中为TextBox。

在这种情况下,可以使用自定义验证器,因为它使您可以使用您开发的任何功能进行验证以满足您的需求。请看一下这个简单的tutorial

更新1 :服务器端验证

这是它在CustomValidator声明中调用服务器端函数的方式:

<asp:CustomValidator runat="server" id="custPrimeCheck"
    ControlToValidate="txtPrimeNumber"
    OnServerValidate="PrimeNumberCheck"
    ErrorMessage="Invalid Prime Number" />

“PrimeNumberCheck”VB函数示例:

Sub PrimeNumberCheck(sender as Object, args as ServerValidateEventArgs)
Dim iPrime as Integer = Cint(args.Value), iLoop as Integer, _
    iSqrt as Integer = CInt(Math.Sqrt(iPrime))

For iLoop = 2 to iSqrt
  If iPrime mod iLoop = 0 then
    args.IsValid = False
    Exit Sub
  End If
Next

args.IsValid = True
End Sub

更新2 :客户端验证

这是它在CustomValidator声明中调用服务器端函数的方式:

<asp:CustomValidator runat="server" id="custPrimeCheck"
    ControlToValidate="txtPrimeNumber"
    ClientValidationFunction="CheckPrime"
    ErrorMessage="Invalid Prime Number" />

“CheckPrime”JavaScript函数示例:

function CheckPrime(sender, args)
{
    var iPrime = parseInt(args.Value);
    var iSqrt = parseInt(Math.sqrt(iPrime));

    for (var iLoop=2; iLoop<=iSqrt; iLoop++)
      if (iPrime % iLoop == 0) 
      {
          args.IsValid = false;
         return;
      }

    args.IsValid = true;
}

感谢@AdrianIftode让我意识到这一点。