ラベルがあり、このラベルのテキストを次のように設定したい
HTTPContext.Current.User.Identity.Name
だから私は書いた
Text = '<%=HTTPContext.Current.User.Identity.Name %>'
しかし、それは機能しません、しかし、私がこれをラベルの外で書いたとき、例えば:
<h2>
<%=HTTPContext.Current.User.Identity.Name %>
</h2>
できます。
ラベルがあり、このラベルのテキストを次のように設定したい
HTTPContext.Current.User.Identity.Name
だから私は書いた
Text = '<%=HTTPContext.Current.User.Identity.Name %>'
しかし、それは機能しません、しかし、私がこれをラベルの外で書いたとき、例えば:
<h2>
<%=HTTPContext.Current.User.Identity.Name %>
</h2>
できます。
<asp:Label ID="lbUserName"
runat="server"
Text='<%# HttpContext.Current.User.Identity.Name %>'
/>
Page_Loadで
if (!Page.IsPostBack )
{
lbUserName.DataBind();
}
このようなラベルを使用してください
<asp:label id="lblx" runat="server" ><%= HTTPContext.Current.User.Identity.Name %></asp:label>
このようにテキストをバインドするには、独自のカスタム式ビルダーを作成する必要があります。
まず、そのようなクラスを名前空間に追加します。
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 %>' />
簡単なことを達成するための複雑な方法ですが、これにより、プロジェクト全体で必要な構文を使用できるようになるため、余分な努力をする価値があるかもしれません.
参照。