6/19/11

SP.NET 2.0


1.1.1.                  L'objet Cache


Comme l'objet Application, il conserve aussi des données accessibles à tous les utilisateurs mais il possède quelques avantages non négligeables:
·         Gestion interne de locking
·         Plus rapide
·         Gestion des dépendances
En ce qui concerne les dépendances, on peut en citer quelques-unes très succinctement car ce genre de programmation demanderait presque un tutoriel à elle toute seule !
§         Dépendances de temps : permet de faire expirer automatiquement une donnée à une date/heure absolue
·         Dépendances fichiers : le serveur d'application peut mettre à jour des données lorsque cells-ci sont modifiées dans le fichier associé
·         Dépendances SQL : sous SqlServer 2000 et 2005. Agit de la même manière avec une base de données grâce au "poling" (interrogation du serveur vers la BD).
·         le callback : association d'une procédure qui est rappelée, non pas dès que la donnée est supprimée mais à la prochaine exécution de la page qui contient la procédure

1.1.2.                  Caching (ou cache HTML)


Un autre aspect de la mise en cache des données suivant diverses méthodes. Ici aussi, il serait trop long d'étendre leur mode d'utilisation.
·         Cache de sortie (output cache) : prend un "copie" instantanée du flux HTML puis supplante toute action de requête en imposant sa "copie" gardée en cache
·         substitution : ce contrôle permet de ne pas mettre en cache une partie de la page même si le cache est activé
·         profils de cache : peuvent être créés dans le Web.Config et associé par leur nom aux pages qui en ont besoin
·         fragments de cache : fonctionne comme le cache de sortie mais donne la possibilité au programmeur de ne mettre en cache qu'une partie de la page HTML. Le frament caching peut se faire grâce aux usercontrols qui disposent eux-mêmes d'une directive Output



1.1.3.                  QueryString


QueryString permet de faire passer des informations via l'URI d'une page à une autre.
En reprenant l'exemple d'un ID de société sélectionné dans une page dont les données sont présentées dans une autre page, on aurait très bien pu indiquer cet ID via l'URI lors de l'appel à la deuxième page.

Vous avez choisi la société ayant un ID = 1235, voici comment passer l'identifiant à la page suivante :

<A href="page2.aspx?idsoc=1235"></A>

Pour récupérer l'ID dans la seconde page, il vous suffira de coder comme suit :
<p>Vous avez choisi la société : & Request.QueryString("idsoc")</p>

Vous comprenez maintenant le pourquoi de certaines url complexes du genre :
http://www.monsite.com/repertoire/liste.asp?id=1257&lng=fr&action=del&email=abc@prov.fr


1.2.            Contrôles utilisateur ASP.NET

Il peut arriver que vous ayez besoin dans un contrôle de fonctionnalités dont les contrôles serveur Web ASP.NET intégrés ne disposent pas. Vous pouvez alors créer vos propres contrôles. Pour ce faire, vous disposez de deux options : Vous pouvez créer :

o        Des contrôles utilisateur. Les contrôles utilisateur sont des conteneurs dans lesquels vous pouvez placer des balises et des contrôles serveur Web. Vous pouvez ensuite traiter le contrôle utilisateur comme une unité et lui assigner des propriétés et des méthodes.
o        Des contrôles personnalisés. Un contrôle personnalisé est une classe que vous écrivez et qui dérive de Control ou de WebControl.

Les contrôles utilisateur sont beaucoup plus faciles à créer que les contrôles personnalisés, dans la mesure où vous pouvez réutiliser des contrôles existants. Il est donc particulièrement facile de créer des contrôles comportant des éléments d'interface utilisateur complexes.
Cette rubrique fournit une vue d'ensemble de l'utilisation des contrôles utilisateur ASP.NET.







1.2.1.                  Structure de contrôle utilisateur


Un contrôle Web ASP.NET ressemble à une page ASP.NET complète (fichier .aspx), avec à la fois une page d'interface utilisateur et du code. Un contrôle utilisateur se crée de façon très semblable à une page ASP.NET. On lui ajoute par la suite le balisage et les contrôles enfants nécessaires. Tout comme une page, un contrôle utilisateur peut inclure du code servant à manipuler son contenu, et notamment à effectuer des tâches telles que des liaisons de données.
Un contrôle utilisateur présente les différences suivantes par rapport à une page Web ASP.NET :
·         L'extension du nom de fichier du contrôle utilisateur est .ascx.
·         Au lieu d'une directive @ Page, le contrôle utilisateur contient une directive @ Control qui définit la configuration et d'autres propriétés.
·         Les contrôles utilisateur ne peuvent pas s'exécuter comme des fichiers autonomes. Vous devez au lieu de cela les ajouter à des pages ASP.NET, comme vous le feriez pour n'importe quel contrôle.
·         Le contrôle utilisateur ne contient pas d'élément html body ou form. Ces éléments doivent se trouver dans la page d'hébergement.
Vous pouvez utiliser sur un contrôle utilisateur les mêmes éléments HTML (sauf les éléments html, body ou form) et les mêmes contrôles Web que dans une page Web ASP.NET. Par exemple, si vous créez un contrôle utilisateur afin de l'utiliser comme barre d'outils, vous pouvez placer dessus une série de contrôles serveur Web Button et créer des gestionnaires d'événements pour les boutons.
L'exemple suivant montre un contrôle utilisateur qui implémente un contrôle Spinner dans lequel les utilisateurs peuvent cliquer à leur guise sur des boutons pour naviguer dans une série de choix au sein d'une zone de texte.
<%@ Control Language="VB" ClassName="UserControl1" %>
<script runat="server">
    Protected colors As String() = {"Red", "Green", "Blue", "Yellow"}
    Protected currentColorIndex As Integer = 0
    Protected Sub Page_Load(ByVal sender As Object, _
            ByVal e As System.EventArgs)
        If IsPostBack Then
            currentColorIndex = CInt(ViewState("currentColorIndex"))
        Else
            currentColorIndex = 0
            DisplayColor()
        End If
    End Sub
   
    Protected Sub DisplayColor()
        textColor.Text = colors(currentColorIndex)
        ViewState("currentColorIndex") = currentColorIndex.ToString()
    End Sub

    Protected Sub buttonUp_Click(ByVal sender As Object, _
            ByVal e As System.EventArgs)
        If currentColorIndex = 0 Then
            currentColorIndex = colors.Length - 1
        Else
            currentColorIndex -= 1
        End If
        DisplayColor()
    End Sub
   
    Protected Sub buttonDown_Click(ByVal sender As Object, _
            ByVal e As System.EventArgs)
        If currentColorIndex = colors.Length - 1 Then
            currentColorIndex = 0
        Else
            currentColorIndex += 1
        End If
        DisplayColor()
    End Sub
</script>
<asp:TextBox ID="textColor" runat="server"
    ReadOnly="True" />
<asp:Button Font-Bold="True" ID="buttonUp" runat="server" 
    Text="^" OnClick="buttonUp_Click" />
<asp:Button Font-Bold="True" ID="buttonDown" runat="server"
    Text="v" OnClick="buttonDown_Click" />

1.2.2.                  Ajout d'un contrôle utilisateur à une page

Pour utiliser un contrôle utilisateur, vous devez l'inclure dans une page Web ASP.NET. Lorsqu'une demande est soumise concernant une page et que cette page contient un contrôle utilisateur, celui-ci passe par toutes les étapes du traitement qu'effectuent tous les contrôles serveur ASP.NET.

Pour insérer un contrôle utilisateur dans une page Web Forms

1.                 Dans la page Web ASP.NET conteneur, créez une directive @ Register comprenant :
·                     Un attribut TagPrefix, qui associe un préfixe au contrôle utilisateur. Ce préfixe sera inclus dans la balise d'ouverture de l'élément du contrôle utilisateur.
·                     Un attribut TagName, qui associe un nom au contrôle utilisateur. Ce nom sera inclus dans la balise d'ouverture de l'élément du contrôle utilisateur.
·                     Un attribut Src, qui définit le chemin d'accès virtuel au fichier contrôle utilisateur que vous incluez.
  1. Dans le corps de la page Web, déclarez l'élément contrôle utilisateur à l'intérieur de l'élément form.
  2. Éventuellement, si le contrôle utilisateur expose des propriétés publiques, définissez-les de façon déclarative.

1.3.            Validation des données

La validation des données est en général la chose la plus importante dans un site web. Ici, nous allons pouvoir travailler côté client et côté serveur, c'est indispensable pour prévenir au plus tôt l'utilisateur d'une erreur éventuelle. En effet, il est inutile d'envoyer une demande au serveur si l'information transmise est erronée : cela génère une perte de temps et un encombrement inutile du serveur.

La validation côté client est donc celle qui intervient la première et se fait en général en JavaScript. ASP.NET fournit des contrôles de validation qui génèrent le code javascript associé, vous évitant de connaître à fond le langage et de devoir taper le code.

Les principaux contrôles de validation sont :


·         RequiredFieldValidator
·         RangeValidator
·         CompareValidator
·         RegularExpressionValidator
·         CustomValidator
·         ValidationSummary
Voyons un peu les caractéristiques générales de chacun.




1.3.1.                  RequiredFieldValidator


Le plus fréquemment utilisé car il est le seul qui peut s'assurer qu'un champ n'est pas vide. En effet, tous les autres contrôles de validation acceptent un champ vide donc, associer ce contrôle de validation aux autres contrôles permet cette vérification essentielle.
Le RequiredFieldValidator a donc pour fonction de vérifier qu'un champ a été modifié. Ses propriétés principales à renseigner sont :


Nom de la propriété
Utilisation
ControlToValidate
doit contenir le nom du contrôle à valider
ErrorMessage
message à afficher en cas d'erreur dans le contrôle ValidationSummary
InitialValue
contient une valeur qui invalide le contrôle si celui-ci est égal à cette valeur précise
Text
texte affiché en cas de non validation

Exemple de RequiredFieldValidator sur une TextBox nommée TxtNom :

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TxtNom" ErrorMessage="Admin n'est pas un nom valide" SetFocusOnError="True" InitialValue="Admin">
</asp:RequiredFieldValidator>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="TxtNom" ErrorMessage="Le champ nom est obligatoire" / >

Vous remarquez que pour valider le nom qui est obligatoire, il nous faut 2 contrôles RequiredFieldValidator.
Un pour signaler que le nom ne peut pas être un champ vide, l'autre pour interdire l'utilisation du nom "Admin".


1.3.2.                  RangeValidator


Comme son nom l'indique, il sera utilisé pour valider l'encodage entre des bornes données. Par exemple, encoder un nombre entre 1 et 10.
Les propriétés sont pratiquemment identiques à celles du contrôle précédent :


Nom de la propriété
Utilisation
ControlToValidate
doit contenir le nom du contrôle à valider
ErrorMessage
message à afficher en cas d'erreur dans le contrôle ValidationSummary
MinimumValue
valeur minimale de la plage de données
MaximumValue
valeur maximale de la plage de données
Text
texte affiché en cas de non validation


Exemple de validation entre 1 et 10 :

<asp:Label ID="Label1" runat="server" Text="Entrez une valeur comprise entre 1 et 10 :"</asp:Label>
<asp:TextBox ID="TxtValeur" runat="server"></asp:TextBox>
<asp:RangeValidator ID="RangeValidator1" runat="server" ErrorMessage="RangeValidator" MaximumValue="10" MinimumValue="1" Type="Integer" ControlToValidate="TxtValue">Valeur entre 1 et 10 requise !</asp:RangeValidator>

1.3.3.                  CompareValidator


Il utilise un opérateur pour comparer les valeurs en présence et valider leur concordance. La situation la plus courante d'utilisation est, bien entendu, lors d'une deuxième saisie d'un mot de passe.
Les propriétés restent aussi dans les mêmes normes. Par contre, vous pouvez avoir plusieurs types de validation :


Comparaison à un type.
 
<asp:CompareValidator runat="server" ID="CompareValidator1" ControlToValidate="TxtValeur" Type="Integer" 
Operator="DataTypeCheck" ErrorMessage="Doit être un chiffre entier de type integer !"</asp:CompareValidator>
Comparaison à une valeur.
 
<asp:CompareValidator runat="server" ID="CompareValidator1" ControlToValidate="TxtValeur" Type="Integer" 
Operator="GreaterThan" ValueToCompare="0" ErrorMessage="Un chiffre positif est requis !"</asp:CompareValidator>
Comparaison à un autre champ.
 
<asp:CompareValidator runat="server" ID="CompareValidator1" ControlToValidate="TxtMotPasse2" Type="String" 
Operator="Equal" ControlToCompare="TxtMotPasse1" 
ErrorMessage="Les mots de passe ne correspondent pas !"</asp:CompareValidator>




1.3.4.                  RegularExpressionValidator


Ce contrôle valide un champ suivant une expression régulière. Il convient pour des tests de validation très complexes mais demande beaucoup de ressources donc, ne l'utilisez pas pour des validations qui peuvent se faire aisément avec plusieurs autres contrôles de validation.
Il utilise les mêmes propriétés que les contrôles précédents avec en plus une propriété ValidationExpression qui correspond évidemment à l'expression régulière de test.
Un petit exemple de validation d'un numéro de compte bancaire pour en voir l'application :


<asp:Label ID="Label1" runat="server" Text="Entrer votre numéro de compte :"</asp:Label>
          <td><asp:TextBox ID="TxtCptBancaire" runat="server"></asp:TextBox>
          <td><asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
           ErrorMessage="RegularExpressionValidator" ControlToValidate="TxtCptBancaire" 
           ValidationExpression="^\d{3}-\d{7}-\d{2}$">Format incorrect
</asp:RegularExpressionValidator>

1.3.5.                  CustomValidator


L'utilisateur définit lui-même une fonction pour effectuer la validation lorsque les contrôles standards ne peuvent pas assumer ce rôle.
Dans ce cas, les propriétés sont un peu différentes :

Dans le cas d'une validation côté client :

·         La propriété ClientValidationFunction contient le nom de la fonction
·         La fonction doit être sous la forme : Function ValidationPersonnelle (source, arguments)
·         la source est l'objet CustomValidator côté client
·         arguments est un objet comportant deux propriétés : Value et IsValid
·         La propriété Value est la valeur à valider
·         La propriété IsValid est un booléen retournant le résultat de la validation
La validation côté client s'effectue avec du code javascript soit entre les balises ad hoc, soit dans un fichier ".js" séparé.
Ce genre de code est bien connu des développeurs javascript :

 
<script language="javascript">
function Validation (obj, args)
{
}
</script>
Dans le cas d'une validation côté serveur :
Placez le code de validation dans l'événement OnServerValidate


1.3.6.                  ValidationSummary


Ce contrôle n'est pas un contrôle de validation à proprement parler, il sert à afficher sous différentes formes le résultat de tous les contrôles de validation sur la page aspx si une erreur est survenue. Il est bien évident que vous pouvez l'omettre et gérer vous-même un affichage d'erreur.

Le contrôle ValidationSummary s'affiche dès que la propriété IsValid de la page est à False.
Il interroge les différents contrôles non valides et récupère la valeur de leur propriété ErrorMessage.
Pour afficher le résultat, vous avez les DisplayMode suivants à votre disposition :

  • List : simple liste
  • BulletList : liste avec puces
  • SingleParagraph : les messages d'erreur sont concaténés les uns à la suite des autres, séparés par une virgule

L'emplacement de l'affichage peut s'effectuer de deux manières :
  • à l'emplacement du contrôle ValidationSummary : mettre sa propriété ShowSummary = True
  • dans une boite de dialogue : mettre sa propriété ShowDialog = True
Il est aussi intéressant de s'arrêter un peu à la propriété ValidationGroup des contrôles utilisateurs. En effet, regrouper certains contrôles sous un même nom dans la propriété ValidationGroup permet de valider d'abord une série de champs puis une autre suivant le résultat de la première validation.

0 التعليقات:

Post a Comment

Related Posts Plugin for WordPress, Blogger...