2009-08-03 7 views
0

Bonjour Je veux valider l'entrée, la méthode des mots de comptage est la suivante:Valider plus de deux mots comme minimum sur asp: TextBox

public static string validateisMoreThanOneWord(string input, int numberWords) 
     { 
      try 
      { 
       int words = numberWords; 
       for (int i = 0; i < input.Trim().Length; i++) 
       { 
        if (input[i] == ' ') 
        { 
         words--; 
        } 
        if (words == 0) 
        { 
         return input.Substring(0, i); 
        } 
       } 
      } 
      catch (Exception) { } 
      return string.Empty; 
     } 

Là où je mets cette méthode, alors quand le retour de la méthode vide après la validation, la page ne serait pas postback (comme RequireFieldValidator sur AjaxToolKit)

Merci!

Répondre

1

Tout d'abord, vous pouvez simplifier que beaucoup:

public static bool validateIsMoreThanOneWord(string input, int numberWords) 
{ 
    if (string.IsNullOrEmpty(input)) return false; 

    return (input.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries).Length >= numberWords);  
} 

Cette version a aussi l'avantage d'être facile à étendre à inclure d'autres espaces, comme des onglets ou des retours chariot. L'étape suivante est que vous ne pouvez pas empêcher la publication de la page avec le code côté serveur seul. Au lieu de cela, vous devez utiliser un CustomValidator et écrire du javascript pour sa fonction ClientValidationFunction, qui ressemblerait à ceci:

var numberWords = 2; 
function checkWordCount(source, args) 
{   
    var words = args.Value.split(' '); 
    var count = 0; 
    for (int i = 0; i<words.length && count<numberWords;i++) 
    { 
     if (words[i].length > 0) count++; 
    } 
    args.IsValid = (count >= numberWords); 
    return args.IsValid; 
} 
3

Implémentez-le en tant que custom validator. Voir http://aspnet.4guysfromrolla.com/articles/073102-1.aspx pour un exemple

Si vous ne voulez pas que cela fonctionne sans publication, vous devez également implémenter la version client de la validation en Javascript. Vous pourrait avoir la version client faire un appel AJAX à l'implémentation C#, mais c'est une logique assez simple - Donc je choisirais de l'implémenter en Javascript et d'enregistrer à l'utilisateur une requête AJAX.

Questions connexes