2012-05-20 45 views
1

我想設置計時器間隔爲5000-10000毫秒隨機使用aspx只(沒有C#代碼後面)。如何爲ASP.NET AJAX Timer控件設置一個隨機的間隔?

下面的示例引發錯誤消息:

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

我希望它有幫助。

回答

0

<%= %>標籤將始終返回一個字符串,因爲它相當於Response.Write(" ")

您的替代方案是代碼隱藏(爲您不想使用代碼隱藏的原因提供了一個很好的解釋,可能會從潛在的受訪者那裏獲得更多的興趣)。或者,使用<%# %>代替。儘管如此,這將要求控件是數據綁定的,這可能比僅使用代碼隱藏更不優雅的解決方案。

+0

'<%# %>'從未工作。我確實使用了代碼,但項目的目標是擺脫大部分背後的代碼而不移動到Razor。 – Different111222

+0

事實上,'<%# %>'不會工作,除非你有數據綁定,正如我所說,這不是一個特別優雅的解決方案。我想你可能會陷入僵局。我一定很好奇,看看其他人是否有任何答案,因爲這是我過去試圖發現自己沒有成功的東西。 – Snixtor

相關問題