0

ラベルがあり、このラベルのテキストを次のように設定したい

HTTPContext.Current.User.Identity.Name

だから私は書いた

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

しかし、それは機能しません、しかし、私がこれをラベルの外で書いたとき、例えば:

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

できます。

4

3 に答える 3

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

Page_Loadで

if (!Page.IsPostBack )
{
   lbUserName.DataBind();
}
于 2012-03-20T12:35:12.660 に答える
1

このようなラベルを使用してください

<asp:label id="lblx" runat="server" ><%= HTTPContext.Current.User.Identity.Name %></asp:label>
于 2012-03-20T12:38:43.633 に答える
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 %>' />

簡単なことを達成するための複雑な方法ですが、これにより、プロジェクト全体で必要な構文を使用できるようになるため、余分な努力をする価値があるかもしれません.

参照

于 2012-03-20T12:50:00.340 に答える