2012-07-24 79 views
2

我的應用程序中有一個要求顯示日期和時間。 我在我的.net應用程序中使用Ajax來執行此操作。在ASP.net中顯示當前時間並讓它打勾

目前我有這樣的代碼

    <asp:ScriptManager ID="ScriptManager1" runat="server" /> 
        <asp:Timer ID="UpdateTimer" runat="server" Interval="1000" OnTick="UpdateTimer_Tick" /> 
        <asp:UpdatePanel ID="TimedPanel" runat="server" UpdateMode="Conditional"> 
         <Triggers> 
          <asp:AsyncPostBackTrigger ControlID="UpdateTimer" EventName="Tick" /> 
         </Triggers> 
         <ContentTemplate> 
          <asp:Label runat="server" ID="DateStampLabel" /> 
         </ContentTemplate> 
        </asp:UpdatePanel> 

當你刷新頁面它工作除了在一週秒鐘後就好了。我的問題是,這是完成這個最好的方法嗎?我也許可以擺脫不顯示秒......這可能不是太重要。如果我這樣做,我該怎麼做?

這裏是代碼隱藏...

Protected Sub UpdateTimer_Tick(ByVal sender As Object, ByVal e As System.EventArgs) 
    DateStampLabel.Text = DateTime.Now.ToString() 
End Sub 

謝謝!

+2

你想顯示服務器時間或客戶端的時間? (如果後者使用javascript only解決方案將是更好的選擇) – Oded 2012-07-24 19:50:46

+1

或者,在返回的HTML中顯示服務器的時間,但使用Javascript將該時間與本地機器進行比較,然後根據本地時鐘每秒更新一次,所以它將顯示服務器的時間而不需要輪詢它。 – Dai 2012-07-24 19:52:36

+0

好問題。這真的沒關係,因爲這將在公司的Intranet上使用。我不確定...我猜客戶可能是最好的... – envinyater 2012-07-24 19:55:06

回答

1

我不會建議你這樣做,因爲每次你想刷新計時器(每秒)時,你實際上正在點擊服務器以顯示計時器。很明顯,這種方法的性能影響是負的

而且您還在使用邪惡UpdatePanel這意味着您每次都在執行整個頁面生命週期。

如果你依賴客戶端瀏覽器上你可以完成相同的行爲:

$('#digital-clock').clock({offset: '0', type: 'digital'}); 
<ul id="digital-clock" class="digital"> 
    <li class="hour"></li> 
    <li class="min"></li> 
    <li class="sec"></li> 
    <li class="meridiem"></li> 
</ul> 

參考:

http://joaquinnunez.cl/jquery-clock-plugin/