レンダリング時に日付/時刻が表示されないのはなぜですか?
<asp:Label runat="server" ID="test" Text="<%= DateTime.Now.ToString() %>" ></asp:Label>
とにかくこれを機能させる方法はありますか?
レンダリング時に日付/時刻が表示されないのはなぜですか?
<asp:Label runat="server" ID="test" Text="<%= DateTime.Now.ToString() %>" ></asp:Label>
とにかくこれを機能させる方法はありますか?
Asp.net サーバー コントロールは <%= ではうまく機能しません。代わりに次のようにします。
<span><%= DateTime.Now.ToString() %></span>
Ps。または、分離コードにラベルのテキストを設定することもできます。シナリオでは、PreRenderComplete に設定するとうまくいく場合があります。
コード ビハインド ファイルがあるかどうかText
はわかりませんが、.aspx マークアップでラベルのプロパティを設定する必要がある場合は、次のコードをページに追加できます。
<script runat="server">
protected override void OnPreLoad(EventArgs e)
{
if (!Page.IsPostBack)
{
this.test.Text = DateTime.Now.ToString();
base.OnPreLoad(e);
}
}
</script>
このようにして、ポストバック時にラベル コントロールの状態を維持できます。
以下のように、ラベルのタグ内にインライン コードを挿入します。
< asp:Label ID="Lbl" runat="server" Text="">
<%= DateTime.Now.ToString() %>
< /asp:Label>
asp タグが表示されます。実行時にプロパティを設定する必要があります。または単に実行し<%= DateTime.Now.ToString() %>
ます。
これを機能させる最も簡単な方法は、コード レンダー ブロックの代わりにデータ バインディング式を使用することです...
<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);
}
ここでの本当の問題は、マークアップ ページのコードを使用して 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" />
インスピレーションをありがとうケブ!