HTTPContext.Current.User.Identity.Name не работает внутри элемента управления? - PullRequest
0 голосов
/ 20 марта 2012

У меня есть метка, и я хочу установить текст этой метки на

HTTPContext.Current.User.Identity.Name

Итак, я написал

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

но это не работает, однако, когда я написал это вне ярлыка, например:

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

это работает.

Ответы [ 3 ]

4 голосов
/ 20 марта 2012
<asp:Label ID="lbUserName" 
           runat="server"
           Text='<%# HttpContext.Current.User.Identity.Name %>'
            />

в Page_Load

if (!Page.IsPostBack )
{
   lbUserName.DataBind();
}
1 голос
/ 20 марта 2012

Чтобы привязать текст таким образом, вам нужно создать свой собственный конструктор пользовательских выражений.

Сначала добавьте такой класс в ваше пространство имен:

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

Следующий шаг - добавление этого в файл web.config:

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

Тогда, наконец, это должно работать:

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

Сложный способ достичь чего-то простого, но это позволит вам использовать синтаксис, который вы хотите использовать во всем проекте, поэтому может стоить дополнительных усилий.

Ссылка .

1 голос
/ 20 марта 2012

используйте ярлык вот так

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