これは動作します:
<span value="<%= this.Text %>" />
これは機能しません:
<asp:Label Text="<%= this.Text %>" runat="server" />
何故ですか?
2番目のケースを適切に機能させるには、つまり、ラベルのテキストを「テキスト」変数の値に設定するにはどうすればよいですか?
これをどのようにマークするかわかりませんが、これは少し重複しています。 このスレッドを参照 。
マークアップにコードを埋め込むことで、マークアップがより明確またはエレガントになるとは思いません。
データバインディング式 を使用します
<asp:Label ID="Label1" runat="server" Text="<%# DateTime.Now %>" ></asp:Label>
コードビハインド、
protected void Page_Load(object sender, EventArgs e){
DataBind();
}
あなたはこれを行うことができます
<asp:Label ID="Label1" runat="server" ><%= variable%></asp:Label>
私のコードでは、このようなものを簡単に使用していますが、ListView Itemテンプレートのようなデータバインドされたコントロールで
<asp:HyperLink ID="EditAction" class="actionLinks" Visible='<%#Eval("IsTrue").ToString() != "True"%>' runat="server" NavigateUrl='<%# Eval("ContentId","/articles/edit.aspx?articleid={0}")%>' />
しかし、<%#..%>を使用してデータバインドされたコントロールの外で使用しようとすると、単に機能しません。
簡単にできる
<a href="<%=myHref%>">My href</a>
ただし、サーバーコントロール、およびデータバインドされたコントロールの外部。 pageloadイベントでDataBind()を明示的に呼び出す必要があります
<asp:Hyperlink ID="aa" NavigateUrl='<%#myHref%>' >
コードでサーバーコントロールの値を設定する必要があります。
まず、ラベルコントロールにIDを割り当てて、コントロールにアクセスできるようにします
<asp:Label ID="myLabel" runat="server" />
次に、Page_Load関数で、ラベルの「テキスト」フィールドの値を設定します
protected void Page_Load(object sender, EventArgs e)
{
myLabel.Text = 'Whatever you want the label to display';
}
この関数は、コードビハインドファイルにあります。または、コードビハインドモデルを使用していない場合は、aspxページ内に必要になります。
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
myLabel.Text = 'Whatever you want the label to display';
}
</script>
がんばろう。
<asp:Label>
は実行時にコンパイルし、htmlタグに変換しています。分離コードまたは次のようなテキストを設定できます。
<asp:Label id="Text1" runat="server" />
<% Text1.Text = this.Text;%>
PD:私のバリアントが機能しないようです、これは良いです:
protected void Page_Load(object sender,EventArgs e)
{
Text1.Text = this.Text;
}
問題の技術的な内訳を知りたい人のために、この小さなナゲットを売り込みます https://blogs.msdn.Microsoft.com/dancre/2007/02/13/the-difference-between-and -in-asp-net /
重要な点は他の回答とかなり一致していると思います。
- <%=式はレンダリング時に評価されます
- <%#式はDataBind()時に評価され、DataBind()が呼び出されない場合は評価されません。
- <%#式は、サーバー側コントロールのプロパティとして使用できます。 <%=式はできません。