1

我想仅使用 aspx 将 Timer Interval 设置为 5000-10000 ms(没有后面的 C# 代码)。

以下示例引发错误消息:

Cannot create an object of type 'System.Int32' from its string representation '<%= Random.Next(5000,10000) %>' for the 'Interval' property.

如何更正间隔变量以获得随机间隔调用?

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:Timer ID="Timer1" runat="server" Interval="<%= Random.Next(5000,10000) %>">
</asp:Timer>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
    </Triggers>
    <ContentTemplate>
        <%= DateTime.Now.ToString() %>
    </ContentTemplate>
</asp:UpdatePanel>

我尝试了 Convert.ToInt32,但它不起作用。

甚至可能吗?

为了获得一些灵感,我设法用这种方式背后的一些 C# 代码解决了这个问题:

aspx:

<asp:Timer ID="Timer1" runat="server" Interval="5000" OnTick="Timer1_Tick">

C# :

protected void Timer1_Tick(object sender, EventArgs e)
{
    Random random = new Random();
    Timer1.Interval = random.Next(5000, 10000);
}

但同样,我想摆脱 C# 代码。

我希望它有所帮助。

4

1 回答 1

0

<%= %>标签将始终返回一个字符串,因为它等同于Response.Write(" ").

您的替代方案是代码隐藏(提供一个很好的解释为什么您不想使用代码隐藏可能会引起潜在受访者的更多兴趣)。或者,改用<%# %>标签。虽然,这将要求控件是数据绑定的,这可能是一个比仅使用代码隐藏更不优雅的解决方案。

于 2012-05-20T23:36:23.153 回答