CustomValidator

giovedì 20 dicembre 2012 - 19.15
Tag Elenco Tags  VB.NET  |  .NET 1.1

zizu75 Profilo | Newbie

principiante disperato . Ho creato un una webForm con un controllo customValidator, nella pagina html ho inserito un piccolo script con JScript per la digitazione in una textbox di numeri pari,ora impostate tutte le proprietà ControlToValidate,ClientValidationFunction e ErrorMessage non funziona ,infatti se digito un numero dispari non succede nulla ,però se utilizzo lo stesso codice con visual studio 2005 tutto va per il meglio e il controllo funziona .Quando carico la pagina con IE ,sulla barra in basso esce un triangolino giallo con un punto interrogativo,clicco sopra e esce la seguente schermata
Messaggio: Errore di sintassi

Linea: 35
Carattere: 1
Codice: 0
URI: http://localhost/PrimoWebForm/ControlloValidazione.aspx


Messaggio: Previsto oggetto
WebUIValidation.js Linea: 298

Codice: 0 Carattere: 9
URI: http://localhost/aspnet_client/system_web/1_1_4322/WebUIValidation.js

Sapete dirmi il perché?
P.S. Utilizzo visual studio 2003 con visual basic.net ,il browser Internet Explorer o Google Crome,

ridaria Profilo | Expert

puoi postare i codice della pagina in questione?


CIAO
Riccardo D'Aria

zizu75 Profilo | Newbie

il codice vb.net è il seguente
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
#Const EMBED_CUSTOM_FUNCTION_IN_HTML = True

#If EMBED_CUSTOM_FUNCTION_IN_HTML = False Then
literal1.Text ="<script language=""Jscript""><!- " & controlchars.CrLf _
& "function CheckEvenNumber(source, args) {"& controlchars.CrLf _
& " var theNumber = args.Value;" & controlchars.CrLf _
& " if (theNumber % 2 == 0) " & controlchars.CrLf _
& " args.IsValid = true;" & controlchars.CrLf _
& " else " & controlchars.CrLf _
& " args.IsValid = false;" & controlchars.CrLf _
& "} " & controlchars.CrLf _
& "//->" controlchars.CrLf _
& "</script>" & controlchars.CrLf
#End If
If txtNome.Attributes("InitialValue") = "" Then
If txtNome.Text.Length > 0 Then
txtNome.Attributes.Add("InitialValue", txtNome.Text)
End If
End If
End Sub

Private Sub CustomValidator1_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles CustomValidator1.ServerValidate
Dim num As Integer = CInt(args.Value)
If (num Mod 2) = 0 Then
args.IsValid = True
Else
args.IsValid = False
End If
End Sub

mentre l html è il seguente

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="ControlloValidazione.aspx.vb" Inherits="PrimoWebForm.ControlloValidazione"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>ControlloValidazione</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie3-2nav3-0">
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<H1>Dimostrazione controlli validazione</H1>
<p>Questa pagina dimostra le caratteristiche di tutti e 5 i controlli di
validazione e di ValidationSummary</p>
<p><asp:validationsummary id="ValidationSummary1" runat="server" Width="576px" Height="80px" HeaderText="Per favore corregga gli errori mostrati qui di seguito."
EnableViewState="False" ShowMessageBox="True"></asp:validationsummary></p>
<p><asp:label id="Label1" runat="server" Width="128px" ForeColor="#0000C0">Nome(Richiesto)</asp:label><asp:textbox id="txtNome" runat="server" style="Z-INDEX: 0"></asp:textbox><asp:requiredfieldvalidator id="RequiredFieldValidator1" runat="server" ErrorMessage="RequiredFieldValidator"
ControlToValidate="txtNome" style="Z-INDEX: 0">Il nome è richiesto!</asp:requiredfieldvalidator></p>
<p><asp:label id="Label2" runat="server" Width="128px" ForeColor="#0000C0">Anno di nascita</asp:label><asp:textbox style="Z-INDEX: 0" id="txtAnnoNascita" runat="server"></asp:textbox><asp:rangevalidator id="RangeValidator1" runat="server" Width="32px" Height="8px" ErrorMessage="L'anno di nascita deve essere appartenere alla serie [1901-2012]"
ControlToValidate="txtAnnoNascita" MaximumValue="2012" MinimumValue="1901" Type="Integer">*</asp:rangevalidator><asp:label style="Z-INDEX: 0" id="Label3" runat="server" Width="240px" BackColor="White" ForeColor="#0000C0">Anno di matrimonio(>anno di nascita)</asp:label><asp:textbox id="txtAnnoMatrimonio" runat="server" Width="80px"></asp:textbox><asp:comparevalidator id="CompareValidator1" runat="server" Width="32px" ErrorMessage="L'anno del suo matrimonio deve essere superiore al suo anno di nascita"
ControlToValidate="txtAnnoMatrimonio" ControlToCompare="txtAnnoNascita" Operator="GreaterThan">*</asp:comparevalidator></p>
<p><asp:Label style="Z-INDEX: 0" id="Label4" runat="server" Width="128px" ForeColor="#0000C0">Data dell'ultima visita</asp:Label>
<asp:TextBox id="txtUltimaVisita" runat="server"></asp:TextBox>
<asp:CompareValidator id="CompareValidator2" runat="server" Width="24px" ErrorMessage="Data dell'ultima visita non valida"
ControlToValidate="txtUltimaVisita" Type="Date" Operator="DataTypeCheck">*</asp:CompareValidator>
<asp:Label id="Label5" runat="server" Width="248px" ForeColor="#0000C0" style="Z-INDEX: 0">Numero di figli(>=0)</asp:Label>
<asp:TextBox id="txtFigli" runat="server" Width="81px"></asp:TextBox>
<asp:CompareValidator id="CompareValidator3" runat="server" ErrorMessage="Il numero di figli deve essere >=0"
ControlToValidate="txtFigli" Type="Integer" Operator="GreaterThan" ValueToCompare="0">*</asp:CompareValidator></p>
<p><asp:Label id="Label6" runat="server" Width="128px" ForeColor="#0000C0">Numero di telefono</asp:Label>
<asp:TextBox id="txtNumTel" runat="server"></asp:TextBox>
<asp:RegularExpressionValidator style="Z-INDEX: 0" id="RegularExpressionValidator1" runat="server" ErrorMessage="Il numero di telefono deve essere nel seguente formato (###)###-####"
ControlToValidate="txtNumTel" ValidationExpression="((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}">*</asp:RegularExpressionValidator></p>
<script language="JavaScript"><!-
function DigitaNumeroPari (source, args){
var theNumber = args.Value;
if (theNumber % 2 ==0)
args.isvalid = true;
else
args.isvalid = false;
}
//->
</script>
<p>
<asp:Label id="Label7" runat="server" Width="128px" ForeColor="#0000C0">Ins.numero pari</asp:Label>
<asp:TextBox id="txtNumPari" runat="server"></asp:TextBox>
<asp:CustomValidator id="CustomValidator1" runat="server" Width="16px" ErrorMessage="Digiti un numero pari"
ControlToValidate="txtNumPari" ClientValidationFunction="DigitaNumeroPari">*</asp:CustomValidator>&nbsp;&nbsp;
<asp:Literal id="Literal1" runat="server"></asp:Literal></p>
<p>
<asp:Button id="Button1" runat="server" Text="Invia"></asp:Button></p>
<p>
<asp:Label id="lblStato" runat="server" style="Z-INDEX: 0" Width="112px" ForeColor="Magenta"></asp:Label></p>
</form>
</body>
</HTML>
se le servono altre informazioni mi faccia sapere .
p.s. non può essere che ci sia qualche problema tra visualstudio 2003 e internet explorer 8
le iinvio pure l'html de4lla pagina di risposta



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>ControlloValidazione</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie3-2nav3-0">
</HEAD>
<body>
<form name="Form1" method="post" action="ControlloValidazione.aspx" language="javascript" onsubmit="if (!ValidatorOnSubmit()) return false;" id="Form1">
<input type="hidden" name="__VIEWSTATE" value="dDwyNzYzNzk5MjM7Oz5JfYgjR3obU1Jc99M/DQVRrkbbaw==" />

<script language="javascript" type="text/javascript" src="/aspnet_client/system_web/1_1_4322/WebUIValidation.js"></script>


<H1>Dimostrazione controlli validazione</H1>
<p>Questa pagina dimostra le caratteristiche di tutti e 5 i controlli di
validazione e di ValidationSummary</p>
<p><div id="ValidationSummary1" headertext="Per favore corregga gli errori mostrati qui di seguito." showmessagebox="True" style="color:Red;height:80px;width:576px;display:none;">

</div></p>
<p><span id="Label1" style="color:#0000C0;width:128px;">Nome(Richiesto)</span><input name="txtNome" type="text" id="txtNome" style="Z-INDEX: 0" /><span id="RequiredFieldValidator1" controltovalidate="txtNome" errormessage="RequiredFieldValidator" evaluationfunction="RequiredFieldValidatorEvaluateIsValid" initialvalue="" style="color:Red;Z-INDEX:0;visibility:hidden;">Il nome è richiesto!</span></p>
<p><span id="Label2" style="color:#0000C0;width:128px;">Anno di nascita</span><input name="txtAnnoNascita" type="text" id="txtAnnoNascita" style="Z-INDEX: 0" /><span id="RangeValidator1" controltovalidate="txtAnnoNascita" errormessage="L'anno di nascita deve essere appartenere alla serie [1901-2012]" type="Integer" evaluationfunction="RangeValidatorEvaluateIsValid" maximumvalue="2012" minimumvalue="1901" style="color:Red;height:8px;width:32px;visibility:hidden;">*</span><span id="Label3" style="color:#0000C0;background-color:White;width:240px;Z-INDEX: 0">Anno di matrimonio(>anno di nascita)</span><input name="txtAnnoMatrimonio" type="text" id="txtAnnoMatrimonio" style="width:80px;" /><span id="CompareValidator1" controltovalidate="txtAnnoMatrimonio" errormessage="L'anno del suo matrimonio deve essere superiore al suo anno di nascita" evaluationfunction="CompareValidatorEvaluateIsValid" controltocompare="txtAnnoNascita" controlhookup="txtAnnoNascita" operator="GreaterThan" style="color:Red;width:32px;visibility:hidden;">*</span></p>
<p><span id="Label4" style="color:#0000C0;width:128px;Z-INDEX: 0">Data dell'ultima visita</span>
<input name="txtUltimaVisita" type="text" id="txtUltimaVisita" />
<span id="CompareValidator2" controltovalidate="txtUltimaVisita" errormessage="Data dell'ultima visita non valida" type="Date" dateorder="dmy" cutoffyear="2029" century="2000" evaluationfunction="CompareValidatorEvaluateIsValid" operator="DataTypeCheck" style="color:Red;width:24px;visibility:hidden;">*</span>
<span id="Label5" style="color:#0000C0;width:248px;Z-INDEX: 0">Numero di figli(>=0)</span>
<input name="txtFigli" type="text" id="txtFigli" style="width:81px;" />
<span id="CompareValidator3" controltovalidate="txtFigli" errormessage="Il numero di figli deve essere >=0" type="Integer" evaluationfunction="CompareValidatorEvaluateIsValid" valuetocompare="0" operator="GreaterThan" style="color:Red;visibility:hidden;">*</span></p>
<p><span id="Label6" style="color:#0000C0;width:128px;">Numero di telefono</span>
<input name="txtNumTel" type="text" id="txtNumTel" />
<span id="RegularExpressionValidator1" controltovalidate="txtNumTel" errormessage="Il numero di telefono deve essere nel seguente formato (###)###-####" evaluationfunction="RegularExpressionValidatorEvaluateIsValid" validationexpression="((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}" style="color:Red;Z-INDEX:0;visibility:hidden;">*</span></p>
<script language="JavaScript"><!-
function DigitaNumeroPari (source, args){
var theNumber = args.Value;
if (theNumber % 2 ==0)
args.isvalid = true;
else
args.isvalid = false;
}
//->
</script>
<p>
<span id="Label7" style="color:#0000C0;width:128px;">Ins.numero pari</span>
<input name="txtNumPari" type="text" id="txtNumPari" />
<span id="CustomValidator1" controltovalidate="txtNumPari" errormessage="Digiti un numero pari" evaluationfunction="CustomValidatorEvaluateIsValid" clientvalidationfunction="DigitaNumeroPari" style="color:Red;width:16px;visibility:hidden;">*</span>&nbsp;&nbsp;
</p>
<p>
<input type="submit" name="Button1" value="Invia" onclick="if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate(); " language="javascript" id="Button1" /></p>
<p>
<span id="lblStato" style="color:Magenta;width:112px;Z-INDEX: 0"></span></p>

<script language="javascript" type="text/javascript">
<!--
var Page_ValidationSummaries = new Array(document.all["ValidationSummary1"]);
var Page_Validators = new Array(document.all["RequiredFieldValidator1"], document.all["RangeValidator1"], document.all["CompareValidator1"], document.all["CompareValidator2"], document.all["CompareValidator3"], document.all["RegularExpressionValidator1"], document.all["CustomValidator1"]);
// -->
</script>


<script language="javascript" type="text/javascript">
<!--
var Page_ValidationActive = false;
if (typeof(clientInformation) != "undefined" && clientInformation.appName.indexOf("Explorer") != -1) {
if (typeof(Page_ValidationVer) == "undefined")
alert("Impossibile trovare la libreria di script '/aspnet_client/system_web/1_1_4322/WebUIValidation.js'. Provare a inserire il file manualmente oppure reinstallarlo eseguendo 'aspnet_regiis -c'.");
else if (Page_ValidationVer != "125")
alert("Questa pagina utilizza una versione di WebUIValidation.js non corretta. La versione prevista è 125. La libreria di script è " + Page_ValidationVer + ".");
else
ValidatorOnLoad();
}

function ValidatorOnSubmit() {
if (Page_ValidationActive) {
return ValidatorCommonOnSubmit();
}
return true;
}
// -->
</script>


</form>
</body>
</HTML>

ridaria Profilo | Expert

perdonami ......

me per un custom Validator server side, bastano veramente una decina di righe di codice tra HTML e vb,

Googla un pò Custom Validator e troverai degli esempi molto più semplici di questo.


CIAO
Riccardo D'Aria

zizu75 Profilo | Newbie

ti ho inviato tutto il codice della pagina.mi scuso

zizu75 Profilo | Newbie

mi devi scusare ma ti ho postato tutto il codice del webform ,dove ci sono altri controlli pensando che ti
servisse pet capire il problema .il customvalidator e'solo uno dei controlli utilizzati ed e'collegato alla funzione javascript digitanumpari,come puoi vedere dall html che ti ho inviato e come puoi vedere mi interessa sopratutto usarlo come controllo client e non come controllo server
.il codice html che ho utilizzato è il seguente

<script language="JavaScript"><!-
function DigitaNumeroPari (source, args){
var theNumber = args.Value;
if (theNumber % 2 ==0)
args.isvalid = true;
else
args.isvalid = false;
}
//->
</script>
<p>
<asp:Label id="Label7" runat="server" Width="128px" ForeColor="#0000C0">Ins.numero pari</asp:Label>
<asp:TextBox id="txtNumPari" runat="server"></asp:TextBox>
<asp:CustomValidator id="CustomValidator1" runat="server" Width="16px" ErrorMessage="Digiti un numero pari"
ControlToValidate="txtNumPari" ClientValidationFunction="DigitaNumeroPari">*</asp:CustomValidator>&nbsp;&nbsp;

il codice vb invece è

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

#Const EMBED_CUSTOM_FUNCTION_IN_HTML = True

#If EMBED_CUSTOM_FUNCTION_IN_HTML = False Then
literal1.Text ="<script language=""Jscript""><!- " & controlchars.CrLf _
& "function CheckEvenNumber(source, args) {"& controlchars.CrLf _
& " var theNumber = args.Value;" & controlchars.CrLf _
& " if (theNumber % 2 == 0) " & controlchars.CrLf _
& " args.IsValid = true;" & controlchars.CrLf _
& " else " & controlchars.CrLf _
& " args.IsValid = false;" & controlchars.CrLf _
& "} " & controlchars.CrLf _
& "//->" controlchars.CrLf _
& "</script>" & controlchars.CrLf
#End If
If txtNome.Attributes("InitialValue") = "" Then
If txtNome.Text.Length > 0 Then
txtNome.Attributes.Add("InitialValue", txtNome.Text)
End If
End If
End Sub

Private Sub CustomValidator1_ServerValidate(ByVal source As Object, ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) Handles CustomValidator1.ServerValidate
Dim num As Integer = CInt(args.Value)
If (num Mod 2) = 0 Then
args.IsValid = True
Else
args.IsValid = False
End If
End Sub

ridaria Profilo | Expert

............ è una questione di sintassi: isvalid non va scritto così, ma così: IsValid

Di seguito la funzione Corretta, ciao.

function DigitaNumeroPari (source, args)
{

var theNumber = args.Value;

if ( theNumber %2 == 0)
{
args.IsValid = true;
}
else
{
args.IsValid = false;
}

}


ps se tutto OK chiudi il post cliccando su accetta.

CIAO
Riccardo D'Aria

zizu75 Profilo | Newbie

salve,ho risolto era solo un problema di collocazione , lo script doveva essere inserito con il menù contestuale di visuali studio 2003,che lo inserisce sul margine sinistro della pagina html.Comunque grazie lo stesso spero che mi potrai aiutare in futuro
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5