3

レンダリング時に日付/時刻が表示されないのはなぜですか?

<asp:Label runat="server" ID="test" Text="<%= DateTime.Now.ToString() %>" ></asp:Label>

とにかくこれを機能させる方法はありますか?

4

6 に答える 6

4

Asp.net サーバー コントロールは <%= ではうまく機能しません。代わりに次のようにします。

<span><%= DateTime.Now.ToString() %></span>

Ps。または、分離コードにラベルのテキストを設定することもできます。シナリオでは、PreRenderComplete に設定するとうまくいく場合があります。

于 2009-03-12T15:52:29.353 に答える
3

コード ビハインド ファイルがあるかどうかTextはわかりませんが、.aspx マークアップでラベルのプロパティを設定する必要がある場合は、次のコードをページに追加できます。

<script runat="server">
    protected override void OnPreLoad(EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            this.test.Text = DateTime.Now.ToString();
            base.OnPreLoad(e);
        }
    }
</script>

このようにして、ポストバック時にラベル コントロールの状態を維持できます。

于 2009-03-12T17:04:05.003 に答える
1

以下のように、ラベルのタグ内にインライン コードを挿入します。

< asp:Label ID="Lbl" runat="server" Text="">
<%= DateTime.Now.ToString() %>
< /asp:Label>
于 2012-11-07T12:03:00.617 に答える
0

asp タグが表示されます。実行時にプロパティを設定する必要があります。または単に実行し<%= DateTime.Now.ToString() %>ます。

于 2009-03-12T15:49:43.387 に答える
0

これを機能させる最も簡単な方法は、コード レンダー ブロックの代わりにデータ バインディング式を使用することです...

<asp:Label runat="server" ID="test" Text="<%# DateTime.Now.ToString() %>" ></asp:Label>

Page.DataBind() が呼び出されるたびに Text プロパティが設定されるようになるため、コード ビハインドでは次のようなものが必要になります。

protected override void OnPreRender(EventArgs e)
{
    if (!Page.IsPostBack)
    {
        DataBind();
    }

   base.OnPreRender(e);
}  
于 2009-03-12T17:13:55.353 に答える
0

ここでの本当の問題は、マークアップ ページのコードを使用して WebControl のプロパティを設定する必要があることです。これを行う唯一の方法は、コントロール全体をコード ブロックに入れることです。エレガントでも示唆的でもありませんが、他のすべてが失敗した場合、これは機能します。

    <%
        var stringBuilder = new StringBuilder();
        var stringWriter = new StringWriter(stringBuilder);
        var htmlWriter = new HtmlTextWriter(stringWriter);
        var label = new Label { Text = DateTime.Now.ToString() };
        label.RenderControl(htmlWriter);
        Response.Write(stringBuilder.ToString());
     %>

ただし、状態を維持するためにコントロールが必要な場合、これは機能しません。

アップデート:

Kev's answer を調査した後、さらに良い解決策を見つけました。コード ビハインド (MVC ページ) はありませんが、コード ブロックを介してページ上のコントロールを参照できるため、新しいソリューションは次のとおりです。注 - これを機能させるには、コード ブロックを最初に配置する必要があります。

 <%
    lblTest.Text = DateTime.Now.ToString();
 %>
<asp:label runat="server" ID="lblTest" />

インスピレーションをありがとうケブ!

于 2009-03-12T16:07:57.180 に答える