簡體   English   中英

如何通過在ASP.NET中調用服務器端函數來應用客戶端驗證

[英]How to apply Client-side validation by calling a server-side function in ASP.NET

我有一個ASP.NET Web窗體應用程序。

我有一個帶有各種TextBoxForm ,現在我有幾個asp:RequiredFieldValidator鏈接到它們,它們屬於同一個ValidationGroup

現在,我必須將一些帶有相關錯誤消息的附加驗證應用於某些TextBox 具體來說,我要檢查TextBox內的TextBox是否為Guid Morevoer必須立即進行此檢查,這意味着一旦用戶將光標從TextBox移出,就必須執行驗證,而無需按Submit。

  1. 如何從Javascript調用IsGuid(string guid)函數?

  2. 我怎樣才能附加兩個不同的錯誤消息作為驗證(例如,如果TextBox.Text不允許使用carachters,並且長度<N,我希望顯示一條消息)

  3. 使用jQueryASP.NET驗證器實現此驗證是否容易?

如果其他人對其實現有其他想法,請隨時提出。 謝謝!

您可以使用ReqularExpressionValidator控件。

是一個正則表達式

^(\{){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}$

您可以根據需要將任意多個Validator應用於同一控件(在本例中為TextBox)。

在這種情況下,自定義驗證器是必經之路,因為它使您能夠使用開發的任何功能來滿足需求進行驗證。 請看一下這個簡單的教程

更新1 :服務器端驗證

這就是它在CustomValidator的聲明中調用服務器端函數的方式:

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

VB函數“ PrimeNumberCheck”的示例:

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" />

JavaScript函數“ CheckPrime”的示例:

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使我意識到這一點。

暫無
暫無

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

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