Accueil > > > ACCEDER AUX PROPRIÉTÉS DU PROFILE VIA UN EXPRESSIONBUILDER PERSONNALISÉ
ACCEDER AUX PROPRIÉTÉS DU PROFILE VIA UN EXPRESSIONBUILDER PERSONNALISÉ
Information sur la source
Description
ASP.net 2.0 permet de se servir des dynamics expressions dans notre code ASP.net .aspx, les dynamic expressions sont les <%$ AppSettings : mykey %> que l'on peut aussi appeller $-expression. Cet exemple montre comment créer nos propres $-expressions pour lire facilement les propriété contenu dans le Profile de l'utilisateur. Pour l'utiliser il suffit de mettre la classe ci-dessus dans le dossier App_Code enregistrer l'expression dans le web.config : <compilation> <expressionBuilders> <add expressionPrefix="Profile" type="ProfileExpressionBuilder"/> </expressionBuilders> </compilation> vous pouvez alors utiliser l'expression de cette façon : <asp:Label ID="lbl1" runat="server" Text="<%$ Profile:City %>"></asp:Label> Ce code est une adaptation du livre "Programming ASP.net 2.0 Applciation - advanced Topics" de Dino Esposito.
Source
- using System;
- using System.Data;
- using System.Configuration;
- using System.Web;
- using System.Web.Security;
- using System.Web.Compilation;
- using System.CodeDom;
- using System.Web.UI;
-
-
- [ExpressionPrefix("Profile")]
- public class ProfileExpressionBuilder : ExpressionBuilder
- {
- /// <summary>
- /// When overridden in a derived class, returns an object that represents the parsed expression.
- /// </summary>
- /// <param name="expression">The value of the declarative expression.</param>
- /// <param name="propertyType">The type of the property bound to by the expression.</param>
- /// <param name="context">Contextual information for the evaluation of the expression.</param>
- /// <returns>
- /// An <see cref="T:System.Object"></see> containing the parsed representation of the expression; otherwise, null if <see cref="M:System.Web.Compilation.ExpressionBuilder.ParseExpression(System.String,System.Type,System.Web.Compilation.ExpressionBuilderContext)"></see> is not implemented.
- /// </returns>
- public override object ParseExpression(string expression, Type propertyType, ExpressionBuilderContext context)
- {
- return expression;
- }
-
- /// <summary>
- /// When overridden in a derived class, returns code that is used during page execution to obtain the evaluated expression.
- /// </summary>
- /// <param name="entry">The object that represents information about the property bound to by the expression.</param>
- /// <param name="parsedData">The object containing parsed data as returned by <see cref="M:System.Web.Compilation.ExpressionBuilder.ParseExpression(System.String,System.Type,System.Web.Compilation.ExpressionBuilderContext)"></see>.</param>
- /// <param name="context">Contextual information for the evaluation of the expression.</param>
- /// <returns>
- /// A <see cref="T:System.CodeDom.CodeExpression"></see> that is used for property assignment.
- /// </returns>
- public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context)
- {
-
- String propertyName = (String)parsedData;
- CodePrimitiveExpression prim = new CodePrimitiveExpression(propertyName);
- CodeExpression[] args = new CodeExpression[1] { prim };
-
- CodeTypeReferenceExpression refType = new CodeTypeReferenceExpression(base.GetType());
- return new CodeMethodInvokeExpression(refType, "GetProperty", args);
-
- }
-
- /// <summary>
- /// Gets the value of the specified Profile Property.
- /// </summary>
- /// <param name="propertyName">Name of the Profile property.</param>
- /// <returns></returns>
- public static Object GetProperty(String propertyName)
- {
- return HttpContext.Current.Profile.GetPropertyValue( propertyName);
- }
-
- /// <summary>
- /// When overridden in a derived class, returns an object that represents an evaluated expression.
- /// </summary>
- /// <param name="target">The object containing the expression.</param>
- /// <param name="entry">The object that represents information about the property bound to by the expression.</param>
- /// <param name="parsedData">The object containing parsed data as returned by <see cref="M:System.Web.Compilation.ExpressionBuilder.ParseExpression(System.String,System.Type,System.Web.Compilation.ExpressionBuilderContext)"></see>.</param>
- /// <param name="context">Contextual information for the evaluation of the expression.</param>
- /// <returns>
- /// An object that represents the evaluated expression; otherwise, null if the inheritor does not implement <see cref="M:System.Web.Compilation.ExpressionBuilder.EvaluateExpression(System.Object,System.Web.UI.BoundPropertyEntry,System.Object,System.Web.Compilation.ExpressionBuilderContext)"></see>.
- /// </returns>
- public override object EvaluateExpression(object target, BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context)
- {
- return GetProperty((String)parsedData);
- }
-
- /// <summary>
- /// When overridden in a derived class, returns a value indicating whether the current <see cref="T:System.Web.Compilation.ExpressionBuilder"></see> object supports no-compile pages.
- /// </summary>
- /// <value></value>
- /// <returns>true if the <see cref="T:System.Web.Compilation.ExpressionBuilder"></see> supports expression evaluation; otherwise, false.</returns>
- public override bool SupportsEvaluate
- {
- get
- {
- return true;
- }
- }
- }
-
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.Compilation;
using System.CodeDom;
using System.Web.UI;
[ExpressionPrefix("Profile")]
public class ProfileExpressionBuilder : ExpressionBuilder
{
/// <summary>
/// When overridden in a derived class, returns an object that represents the parsed expression.
/// </summary>
/// <param name="expression">The value of the declarative expression.</param>
/// <param name="propertyType">The type of the property bound to by the expression.</param>
/// <param name="context">Contextual information for the evaluation of the expression.</param>
/// <returns>
/// An <see cref="T:System.Object"></see> containing the parsed representation of the expression; otherwise, null if <see cref="M:System.Web.Compilation.ExpressionBuilder.ParseExpression(System.String,System.Type,System.Web.Compilation.ExpressionBuilderContext)"></see> is not implemented.
/// </returns>
public override object ParseExpression(string expression, Type propertyType, ExpressionBuilderContext context)
{
return expression;
}
/// <summary>
/// When overridden in a derived class, returns code that is used during page execution to obtain the evaluated expression.
/// </summary>
/// <param name="entry">The object that represents information about the property bound to by the expression.</param>
/// <param name="parsedData">The object containing parsed data as returned by <see cref="M:System.Web.Compilation.ExpressionBuilder.ParseExpression(System.String,System.Type,System.Web.Compilation.ExpressionBuilderContext)"></see>.</param>
/// <param name="context">Contextual information for the evaluation of the expression.</param>
/// <returns>
/// A <see cref="T:System.CodeDom.CodeExpression"></see> that is used for property assignment.
/// </returns>
public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context)
{
String propertyName = (String)parsedData;
CodePrimitiveExpression prim = new CodePrimitiveExpression(propertyName);
CodeExpression[] args = new CodeExpression[1] { prim };
CodeTypeReferenceExpression refType = new CodeTypeReferenceExpression(base.GetType());
return new CodeMethodInvokeExpression(refType, "GetProperty", args);
}
/// <summary>
/// Gets the value of the specified Profile Property.
/// </summary>
/// <param name="propertyName">Name of the Profile property.</param>
/// <returns></returns>
public static Object GetProperty(String propertyName)
{
return HttpContext.Current.Profile.GetPropertyValue( propertyName);
}
/// <summary>
/// When overridden in a derived class, returns an object that represents an evaluated expression.
/// </summary>
/// <param name="target">The object containing the expression.</param>
/// <param name="entry">The object that represents information about the property bound to by the expression.</param>
/// <param name="parsedData">The object containing parsed data as returned by <see cref="M:System.Web.Compilation.ExpressionBuilder.ParseExpression(System.String,System.Type,System.Web.Compilation.ExpressionBuilderContext)"></see>.</param>
/// <param name="context">Contextual information for the evaluation of the expression.</param>
/// <returns>
/// An object that represents the evaluated expression; otherwise, null if the inheritor does not implement <see cref="M:System.Web.Compilation.ExpressionBuilder.EvaluateExpression(System.Object,System.Web.UI.BoundPropertyEntry,System.Object,System.Web.Compilation.ExpressionBuilderContext)"></see>.
/// </returns>
public override object EvaluateExpression(object target, BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context)
{
return GetProperty((String)parsedData);
}
/// <summary>
/// When overridden in a derived class, returns a value indicating whether the current <see cref="T:System.Web.Compilation.ExpressionBuilder"></see> object supports no-compile pages.
/// </summary>
/// <value></value>
/// <returns>true if the <see cref="T:System.Web.Compilation.ExpressionBuilder"></see> supports expression evaluation; otherwise, false.</returns>
public override bool SupportsEvaluate
{
get
{
return true;
}
}
}
Conclusion
Vous pouvez trouver d'avantages d'informations sur le sujet sur mon blog : http://blogs.codes-sources.com/cyril/archive/2006/ 12/14/dynamic-expression-personnalise-profileexpre ssionbuilder-avec-asp-net-2-0.aspx
Historique
- 14 décembre 2006 16:50:58 :
- rajout de l'adresse du post de mon blog :-)
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Pb sur RegEx [ par Djero ]
salut à tous, je cherche à remplacer une expression dans une chaine de caractère via RegExp. set regEx = New RegExp regEx.IgnoreCase = True r
Pb d'expression régulière [ par totodude ]
Bonjour tout le monde,je voudrais remplacer dans du code html<code></td><td> <span id="toto" style="width:584px;">titi<
expression reguliere [ par detoo ]
Bonjour à tous!Je fais appel à vous pour une petite galère:ayant réaliser un moteur de recherche en asp avec des expressions régulières, je cherche un
Remplacer la derniere "," (virgule) d'une expression ? [ par scoubigee ]
Lors d'une boucle asp je génère cette expression : '10044','5022','10045','5022,5',cette chaine sert a etre transmise a une fonction javascr
est ce que cette expression est correcte? si non comment je peux la corriger? [ par firas_tn ]
if ((Session["fonction"].ToString() != "LL") & (Session["fonction"].ToString() != "planification") & (Session["fonction"].ToString() != "accep
Expression réguliere pour reconnaitre un entier positif? [ par fr64 ]
Bonjour, Je cherche la syntaxe pour une expression régulière qui permette valider qu'un texte saisi est un entier > 0. Mon problème
Les maillons... [ par AbriBus ]
Salut a tous,il existe en java un objet StingTokenizer qui permet de "decouper" une expression en fonction d'une autre expression... l'exemple le plus
Profile mais pas dans l'utilisateur courant [ par gstrit ]
Bonjour,J'utilise le createuserwizard pour créer mes utilisateurs. J'ai ajouté des champs nom et prénom. Le probleme est que quand
Comment ajouter des "property" à un "profile" d'utilisateur [ par SuperBouly ]
Bonjour, Je travaille sur VS 2005 en VB, et j'utilise la sécurité du framawork 2.0.J'ai besoin qu'un utilisateur-adhérent soit repéré par d'autres par
Expression Régulière [ par nounours21_6 ]
Bonjour tout le monde,j'ai un petit sousis d'exp. reg. qui ne fonctionne pasvoila mon code :ElseIf Regex.IsMatch(Me<font size=
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
GRIDVIEW CHECKBOXGRIDVIEW CHECKBOX par invent001
Cliquez pour lire la suite par invent001 OUTIL MYSQLOUTIL MYSQL par nobla
Cliquez pour lire la suite par nobla
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|