سؤال

I have a label and I want to set text of this label to

HTTPContext.Current.User.Identity.Name

So I wrote

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

but it doesn't work, however when I wrote this outside of the lable for example:

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

it works.

هل كانت مفيدة؟

المحلول

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

in Page_Load

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

نصائح أخرى

use label like this

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

To bind the text like this you will have to create your own custom expression builder.

First, add such class to your namespace:

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);
    }
}

Next step is adding this to your web.config file:

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

Then finally this should work:

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

Complicated way to achieve something simple, but this will allow you to use the syntax you want throught your whole project so might worth the extra effort.

Reference.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top