2012-03-20 3 views
0

У меня есть ярлык, и я хочу, чтобы установить текст этой метки дляHTTPContext.Current.User.Identity.Name не работает внутри элемента управления?

HTTPContext.Current.User.Identity.Name 

Так что я написал

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

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

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

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

+0

что текст в 'Text = '<% = HTTPContext.Current.User.Identity.Name%>'' –

+0

это атрибут управления asp: label – HOY

+1

@HOY: почему бы вам не написать текст ярлыка в коде позади? –

ответ

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

в Page_Load

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

Показывает значение null (Изменить: моя ошибка) – HOY

+0

@HOY вы должны проверить свой HttpContext.Current.User.Identity.Name не null. вышеуказанное решение должно работать – Devjosh

+0

Но как насчет той же проблемы в проблеме? Здесь привязка данных не работает http://stackoverflow.com/questions/9863899/passing-windows-user-id-as-parameter-to-sqldatasource-gives-databinding-exceptio – HOY

1

использование этикетки как этот

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

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

Во-первых, добавить такой класс в пространстве имен:

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 %>' /> 

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

Reference.