2012-04-25 5 views
0

У меня есть приложение ASP.NET Web Forms.Как применить проверку на стороне клиента, вызывая функцию на стороне сервера в ASP.NET

У меня есть Form с различными TextBox и сейчас у меня есть несколько asp:RequiredFieldValidator связаны с их принадлежностью к тому же ValidationGroup.

Теперь я должен применить к некоторой TextBox дополнительную валидацию с соответствующим сообщением об ошибке. В частности, я должен проверить, является ли текст внутри TextBoxGuid или нет. Morevoer эта проверка должна выполняться «на лету», а это означает, что, как только пользователь перемещает курсор из TextBox, валидация должна быть выполнена без необходимости нажимать submit.

  1. Как я могу назвать функцию IsGuid(string guid) с помощью Javascript?

  2. Как можно прикрепить два различных сообщения об ошибках, как проверки (например, я хочу, чтобы отображаться сообщение, если TextBox.Text имеет carachters не допускается и клыков < N)

  3. ли легче осуществить эту проверку с jQuery или с помощью ASP.NET валидаторы?

Если у кого-то еще есть какая-либо другая идея для его реализации, пожалуйста, не стесняйтесь предлагать. Благодаря!

ответ

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}$ 
+0

thansk, я использую то же Regex уже в своей функции IsGuid на стороне сервера. Есть ли способ использовать AJAX для асинхронной отправки текста в TextBox в fucntion? – CiccioMiami

+0

Вам не нужно использовать код сервера. Элемент управления RegularExpressionValidator находится в той же области, что и RequiredFieldValidator. У вас есть причина не использовать его? –

+0

нет, но на всякий случай мне нужна еще одна проверка, где я должен реализовать более сложные бизнес-правила, возможно, с доступом к БД. В этом случае мне понадобится серверное fucntion для вызова из JavaScript – CiccioMiami

0

Вы можете использовать столько валидаторов, сколько вам нужно для одного элемента управления, в этом случае ваш TextBox.

В этом случае пользовательский валидатор - это путь, потому что он позволяет выполнять валидацию с любой функцией, которую вы разрабатываете, чтобы удовлетворить ваши потребности. Пожалуйста, взгляните на этот простой tutorial.

UPDATE 1: Server Side Validation

Это, как он вызывает функцию на стороне сервера в декларации 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" /> 

пример "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 для изготовления меня осознавая это.

+1

Эта функция на стороне сервера называется .. серверной стороной. Он не будет вызван на клиента. Вам нужно создать функцию javascript, которая проверяет простое число. –

+0

@AdrianIftode Я могу смутить, но насколько я знаю, этот ответ отвечает на этот вопрос: Как применить проверку на стороне клиента, вызывая функцию на стороне сервера в ASP.NET. Правильно? – aleafonso

+0

Он не отвечает полностью. Вы можете вызвать код на стороне сервера, но не с помощью специального валидатора. Проверьте AJAX, WebMethods. Пользовательский валидатор также нуждается в функции javascript. Эта функция сможет вызывать код на стороне сервера с помощью AJAX. –