如何为ASP.NET AJAX Timer控件设置随机区间?

时间:2012-05-20 22:51:42

标签: c# asp.net

我想使用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.

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

<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#代码。

我希望它有所帮助。

1 个答案:

答案 0 :(得分:0)

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

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