|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
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-profileexpressionbuilder-avec-asp-net-2-0.aspx
Fichier Zip
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
Télécharger le zip
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
Sources en rapport avec celle ci
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=
|
Téléchargements
Logiciels à télécharger sur le même thème :
|