Salve a tutti!
Sto studiando un caso di Input validation con cross-posting.
Lo scenario e' semplice:
1. c'e' un campo asp:TextBox per lo username, con associato un asp:RequireFieldValidator ed un asp:RegularExpressionValidator
2. c'e' un campo asp:TextBox per la mail, con associato un asp:RequireFieldValidator ed un asp:RegularExpressionValidator
3. c'e' un campo asp:TextBox per la password, con associato un asp:RequireFieldValidator ed un asp:CustomValidator. Il componente asp:CustomValidator effettua una validazione Client-Side
<asp:CustomValidator id="myValidator" runat="server" Text="*" ToolTip="..." ErrorMessage="..." ControlToValidate="PasswordTextBox"
ClientValidationFunction="ValidatePassword"></asp:CustomValidator>
La funzione, lato Javascript, e'
function ValidatePassword(source, arguments) {
//controlla che la password sia tra 6 e 14 caratteri e contenga
//almeno 1 lettera maiuscola, una minuscola e un numero
//la funzione e' presa da 'Web Applications Development with Microsoft.NET Framework 4'
var data = arguments.Value.split('');
arguments.IsValid = false;
//check length
if (data.length < 6 || data.length > 14) return;
//check for constraints
var uc = false; var lc = false; var num = false;
for (var c in data) {
if (data[c] >= 'A' && data[c] <= 'Z')
{ uc = true; }
else if (data[c] >= 'a' && data[c] <= 'z')
{ lc = true; }
else if (data[c] >= '0' && data[c] <= '9')
{ num = true; }
if (uc && lc && num) {
argument.IsValid = true;
break;
}
}
4. per provare il Cross-Posting, c'e' infine un asp:Button con PostBackUrl impostato sulla pagina che dovrebbe ricevere i dati.
Se i dati non sono validi, ottengo gli errori, come aspettato, ma se i dati sono validi il postback rimane sulla pagina originale, senza andare a quella indicata dal PostBackUrl!
Se elimino il controllo <asp:CustomValidator> la pagina si comporta correttamente: in caso di dati validi, vado nella pagina indicata dal PostBackUrl.
Ho sbagliato a impostare la funzione Javascript? C'e' qualche impostazione in piu' che devo utilizzare per far funzionare il Cross-Posting con un CustomValidator?
Grazie dell'attenzione.
Daniele