为什么这不显示渲染时的日期/时间?
<asp:Label runat="server" ID="test" Text="<%= DateTime.Now.ToString() %>" ></asp:Label>
有没有让这项工作?
答案 0 :(得分:4)
Asp.net服务器控件无法与&lt;%=一起使用,而是可以执行:
<span><%= DateTime.Now.ToString() %></span>
聚苯乙烯。您也可以在代码隐藏中设置标签的文本。您的方案可能适用于在PreRenderComplete上设置它。
答案 1 :(得分:3)
我不确定你是否有一个代码隐藏文件,但如果你真的需要在.aspx标记中设置标签的Text
属性,你可以将以下代码添加到页面中:
<script runat="server">
protected override void OnPreLoad(EventArgs e)
{
if (!Page.IsPostBack)
{
this.test.Text = DateTime.Now.ToString();
base.OnPreLoad(e);
}
}
</script>
这样您就可以在回发时维护标签控件的状态。
答案 2 :(得分:1)
最简单的方法是使用数据绑定表达式代替代码渲染块...
<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);
}
答案 3 :(得分:1)
将内联代码放在标签的标签内,如下所示
< asp:Label ID="Lbl" runat="server" Text="">
<%= DateTime.Now.ToString() %>
< /asp:Label>
答案 4 :(得分:0)
渲染asp标签。您必须在运行时设置该属性。或者只是做<%= DateTime.Now.ToString() %>
。
答案 5 :(得分: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的答案之后,我找到了更好的解决方案。我没有后面的代码(它是一个MVC页面),但你仍然可以通过代码块引用页面上的控件,所以我的新解决方案如下。注 - 您必须先放置代码块才能使其正常工作。
<%
lblTest.Text = DateTime.Now.ToString();
%>
<asp:label runat="server" ID="lblTest" />
感谢Kev的灵感!