CheckBox obbligatorio tramite CustomValidator

Se si vuole obbligare la selezione di una checkbox (tipicamente quella per la verifica della privacy) non è possibile utilizzare il controllo RequiredFieldValidator.

La soluzione è comunque semplice utilizzando il flessibile controllo CustomValidator.

Inserite nell'html due controlli:

  • la CheckBox:
    <asp:CheckBox ID="chkPrivacy" Runat="server" />
  • il controllo CustomValidator
    <asp:CustomValidator ClientValidationFunction="RequiredPrivacy" Runat="server" ID="CustomValidatorchkPrivacy" />

Validazione lato server

La validazione si riduce semplicemente alla verifica della proprietà Checked del controllo CheckBox

private void CustomValidatorchkPrivacy_ServerValidate(object source, ServerValidateEventArgs args)

{

    args.IsValid = true;

    if(chkPrivacy.Checked == false)

        args.IsValid = false;

}

Validazione lato client

 La validazione lato client (facoltativa) si effettua impostando la proprietà ClientValidationFunction del controllo CustomValidator

ClientValidationFunction="RequiredPrivacy"

ed inserendo nell'head il codice Javascript per la validazione. Ad esempio:

<script language="javascript">
function RequiredPrivacy(oSrc, args){
  if (document.all["<%=chkPrivacy.ClientID%>"].checked == false) {
        alert("Devi acconsentire al trattamento dei dati personali");
        args.IsValid = false;
  }
 }
</script>

 Si noti lo script server chkPrivacy.ClientID necessario per passare il corretto ID del controllo a runtime al codice Javascript

Share

Convalidare le date in Asp.Net con il controllo CompareValidator

La validazione di una data inserita in un form è fornita direttamente e semplicemente dal controllo di convalida CompareValidator.

Per controllare che il valore inserito in una textbox sia di tipo data bastano i seguenti passi:

  • Creare un controllo di tipo TextBox
    <asp:textbox id="InputDate" runat="server" width="200px"></asp:textbox>
  • Inserire un controllo CompareValidator
  • Impostare il nome del controllo da verificare con il nome della TextBox: InputDate
  • Impostare il messaggio di errore, la visualizzazione (statica, dinamica) e gli altri parametri del controllo
  • Impostare l'operatore a DataTypeCheck
  • Impostare il tipo di dato a Date

A questo punto la convalida è già perfettamente funzionante. Il controllo risultante sarò di questo tipo:

 

<asp:comparevalidator id="CompareValidator1" runat="server" errormessage="La data deve essere nel formato gg/mm/aaaa"  controltovalidate="InputDate" operator="DataTypeCheck" type="Date"></asp:comparevalidator>

Due nota bene:

  • Se si vuole che la convalida venga sempre effettua è obbligatorio inserire anche un controllo di tipo RequiredFieldValidator (come per tutte le convalide che si vuole rendere obbligatorie)
  • Effettuare sempre la convalida anche lato server testando la proprietà Page.IsValid!!
Share

Come determinare altezza e larghezza di una immagine caricata tramite il controllo upload in asp.net

Capita spesso di caricare tramite pagina Asp.Net un'immagine.

Il supporto fornito dal Framework .Net consente di farlo in maniera molto più semplice che in passato accedendo alla proprietà PostedFile del controllo INPUT di tipo file modificato per essere eseguito sul server.

Ad esempio:

<input id="imgUpload" type="file" runat="server">

La necessità spesso è quella di verificare il tipo di file inviato oppure altezza e larghezza in pixel per evitare che venga caricata un'immagine troppo grande.

A seguito dell'evento di upload si può fare:

'Creo un oggetto immagine leggendo lo stream di upload

Dim imgUploaded As System.Drawing.Image

imgUploaded = System.Drawing.Image.FromStream(imgUpload.PostedFile.InputStream)

'Determino altezza e larghezza dell'immagine

Dim imgUploadedWidth As Single = imgUploaded.PhysicalDimension.Width

Dim imgUploadedHeight As Single = imgUploaded.PhysicalDimension.Height

 'A questo punto posso fare tutti i controlli del caso

If imgUploadedWidth > 120 Or imgUploadedHeight > 60 Then

Me.ErrorMessageImg.Text = "Le dimensioni massime dell'immagine possono essere di 120*60. Caricare un'immagine più piccola."

Return

End If

Try

ImageBrowse.PostedFile.SaveAs(Server.MapPath(virtualPath))

Catch ex As Exception

Me.ErrorMessageImg.Text = "Errore: impossibile caricare l'immagine sul sito. " + ex.Message.ToString

Return

End Try

Share

Come inviare email con gli oggetti CDONTS in ASP.NET

Importare il namespace System.Web.Mail

<%@ Import Namespace="System.Web.Mail"%>

Istanziare l'oggetto MailMessage, impostarne i membri ed inviare la mail:

Dim mail As New MailMessage
mail.From = "mittente@test.it"
mail.To = "destinatario@test.it"
mail.Subject = "Email di test"
mail.Body = "Testo del messaggio"
'Invio della mail
SmtpMail.Send(mail)
Share

Come utilizzare il controllo AdRotator in ASP.NET

L'implementazione di un meccanismo di visualizzazione dei banner a rotazione in ASP.NET è molto simile a quanto era necessario in ASP classico.

  1. Inserire il controllo AdRotator sul form
    <asp:AdRotator id="AdRotator1" runat="server"></asp:AdRotator>
  2. Anche in ASP.NET come in ASP l'elenco dei banner risiede su di un file. A differenza di ASP classico però in ASP.NET tale file è in formato XML.
    Il file XML ha la seguente struttura:

    <Advertisements>
    <Ad>
    <ImageUrl>/images/banner/ban1.gif</ImageUrl>
    <NavigateUrl>http://www.be-st.it</ NavigateUrl >
    <AlternateText>Be.St. Web Consulting </AlternateText>
    <Impressions>70</Impressions>
    </Ad>
    <Ad>
    <ImageUrl>/images/banner/ban1.gif</ImageUrl>
    <NavigateUrl>http://www.be-st.it/prodotti</NavigateUrl>
    <AlternateText>Prodotti e-commerce </AlternateText>
    <Impressions>30</Impressions>
    </Ad>
    </Advertisements>

    <ImageUrl>: percorso in cui risiede il banner
    <NavigateUrl>: url a cui ci si collega cliccando sul banner
    <AlternateText>: è il testo visualizzato passando sopra l'immagine o se l'immagine non viene correttamente caricata
    <Impressions>: ha un nome un po' fuorviante. In realtà indica semplicemente l'importanza (o priorità) del banner.

     

  3. Il file XML creato va inserito come parametro nell'attributo AdvertisementFile del tag AdRotator
    <asp:AdRotator id="AdRotator1" runat="server" AdvertisementFile="banner.xml"></asp:AdRotator>
Share