web-dev-qa-db-ja.com

サーバーコントロール属性でASP.NET <%=タグを使用する方法は?

これは動作します:

<span value="<%= this.Text %>" />

これは機能しません:

<asp:Label Text="<%= this.Text %>" runat="server" />

何故ですか?

2番目のケースを適切に機能させるには、つまり、ラベルのテキストを「テキスト」変数の値に設定するにはどうすればよいですか?

40
Joao Silva

これをどのようにマークするかわかりませんが、これは少し重複しています。 このスレッドを参照

マークアップにコードを埋め込むことで、マークアップがより明確またはエレガントになるとは思いません。

6
chevett

データバインディング式 を使用します

<asp:Label ID="Label1" runat="server" Text="<%# DateTime.Now %>" ></asp:Label>

コードビハインド、

protected void Page_Load(object sender, EventArgs e){
  DataBind();
}
54
adatapost

あなたはこれを行うことができます

 <asp:Label ID="Label1" runat="server" ><%= variable%></asp:Label>
12
user1855575

私のコードでは、このようなものを簡単に使用していますが、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%>' >
7
Sachin Kumar

コードでサーバーコントロールの値を設定する必要があります。

まず、ラベルコントロールに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>

がんばろう。

7
RR.

<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;
}
6
x2.

問題の技術的な内訳を知りたい人のために、この小さなナゲットを売り込みます https://blogs.msdn.Microsoft.com/dancre/2007/02/13/the-difference-between-and -in-asp-net /

重要な点は他の回答とかなり一致していると思います。

  • <%=式はレンダリング時に評価されます
  • <%#式はDataBind()時に評価され、DataBind()が呼び出されない場合は評価されません。
  • <%#式は、サーバー側コントロールのプロパティとして使用できます。 <%=式はできません。
0
Bondolin