2012-03-20 3 views
0

J'ai un label et je veux définir le texte de cette étiquette àHTTPContext.Current.User.Identity.Name ne fonctionne pas dans un contrôle?

HTTPContext.Current.User.Identity.Name 

J'ai donc écrit

Text = '<%=HTTPContext.Current.User.Identity.Name %>' 

mais il ne fonctionne pas, mais quand je l'ai écrit ce en dehors du lable pour exemple:

<h2> 
<%=HTTPContext.Current.User.Identity.Name %> 
</h2> 

cela fonctionne.

+0

quel est le texte dans 'Text = '<% = HTTPContext.Current.User.Identity.Name%>'' –

+0

c'est un attribut de contrôle d'étiquette d'asp: – HOY

+1

@HOY: pourquoi n'écrivez-vous pas le texte d'étiquette dans le code derrière ?? –

Répondre

4
<asp:Label ID="lbUserName" 
      runat="server" 
      Text='<%# HttpContext.Current.User.Identity.Name %>' 
      /> 

dans Page_Load

if (!Page.IsPostBack) 
{ 
    lbUserName.DataBind(); 
} 
+0

Toujours affiche null (Modifier: mon erreur) – HOY

+0

@HOY vous devriez vérifier votre HttpContext.Current.User.Identity.Name n'est pas nul. la solution ci-dessus devrait fonctionner – Devjosh

+0

Mais qu'en est-il du même problème dans le problème? La liaison de données ne fonctionne pas ici http://stackoverflow.com/questions/9863899/passing-windows-user-id-as-parameter-to-sqldatasource-gives-databinding-exceptio – HOY

1

label utilisation comme celui-ci

<asp:label id="lblx" runat="server" ><%= HTTPContext.Current.User.Identity.Name %></asp:label> 
1

Pour lier le texte comme cela, vous devrez créer votre propre générateur d'expression personnalisée.

D'abord, ajouter cette classe à votre espace de noms:

using System.Web.Compilation; 
using System.CodeDom; 

[ExpressionPrefix("Code")] 
public class CodeExpressionBuilder : ExpressionBuilder 
{ 
    public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, 
     object parsedData, ExpressionBuilderContext context) 
    { 
     return new CodeSnippetExpression(entry.Expression); 
    } 
} 

L'étape suivante ajoute ceci dans votre fichier web.config:

<compilation debug="true"> 
    <expressionBuilders> 
     <add expressionPrefix="Code" type="YourNameSpace.CodeExpressionBuilder"/> 
    </expressionBuilders> 
</compilation> 

Puis, finalement, cela devrait fonctionner:

<asp:Label id="YourLabel" runat="server" Text='<%$ Code:HttpContext.Current.User.Identity.Name %>' /> 

Une façon compliquée de réaliser quelque chose de simple, mais cela vous permettra d'utiliser la syntaxe que vous voulez dans votre ensemble projet pourrait donc valoir l'effort supplémentaire.

Reference.

Questions connexes