如何将服务器的最新datetime传递给JavaScript函数?

如何将服务器的最新datetime传递给JavaScript函数?,javascript,c#,datetime,Javascript,C#,Datetime,我有一个HTML文本框,我们有文本框onkeyup事件 因此,只要我们按下文本框中的任意键,我就需要服务器上最新的UTC日期时间(C#)。为此,我在该文本框的“keyUp”事件上添加了JavaScript函数,如下所示- <type="text" onkeyup="return SetUTCDateTime('@DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss")'); /> <script type="text/javascrip

我有一个HTML文本框,我们有文本框onkeyup事件

因此,只要我们按下文本框中的任意键,我就需要服务器上最新的UTC日期时间(C#)。为此,我在该文本框的“keyUp”事件上添加了JavaScript函数,如下所示-

<type="text" onkeyup="return SetUTCDateTime('@DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss")'); />


<script type="text/javascript>

  var currentUTCDateTime  = null;

  function SetUTCDateTime(currentMessageUTCDateTime)
  {    
    currentUTCDateTime = currentMessageUTCDateTime;     
  }

 </script>

var currentUTCDateTime=null;
函数SetUTCDateTime(currentMessageUTCDateTime)
{    
currentUTCDateTime=currentMessageUTCDateTime;
}
我在JavaScript中使用了全局变量,以便为进一步使用保留时间

但我的问题是,当我在文本框中输入任何文本时,这个函数第一次给出正确的时间。但对于任何进一步/下一次点击,它给出了相同的值,但应该给出最新的时间

仅供参考,我无法在此使用客户端/浏览器时间,因为它可能无效。这就是为什么我要使用服务器端的DateTime值。 而且我不想调用任何API来从服务器获取最新的UTC时间(由于性能问题)


每次单击文本框上的时,是否有办法获取最新的服务器端时间?

看起来您正试图将服务器的日期时间呈现到SetUTCDateTime方法中,但这仅在页面呈现时发生一次


假设有一个很好的理由希望从服务器获取时间,那么您需要做的是编写SetUTCDateTime方法,以执行返回到服务器的ajax请求,并让服务器上的操作返回当前日期时间。

您对客户端和服务器端以及ASP.NET运行方式的看法存在问题

当您试图从服务器获取正确的日期/时间时,您从未真正调用服务器。浏览器需要联系服务器以获取DateTime.UtcNow的最新值

在您的示例中,您正在呈现值为DateTime.UtcNow的页面,与第一个HTTP请求上的页面相同。您的HTML页面通过HTTP和以下部分传递到浏览器:


然后设置WebSocket。所有答案都指向您需求中的基本矛盾。甚至WebSocket也会保持打开的连接。它的性能可能比ajax调用更好,但这并不神奇。你介意在c#中创建一个小函数,它可以从脚本中调用onkeyup并获得准确的数据时间吗?@saaduu,实际上,目前我们在c#中使用的函数与我们从ajax调用以获得日期时间的函数相同。但由于我们有一个聊天应用程序,我们希望在其中实现它。你可以在聊天文本框中频繁发布帖子,它会挂起用户界面。这就是为什么我们想用其他方式来更改它。是的,我们可以调用ajax,但由于性能原因,我不想使用ajax调用。如果不回叫服务器,则无法随时从服务器获取日期时间。剃刀不是魔法。我是否误解了什么?我们可以通过任何客户端库(如-Moment.JS)这样做吗。无论客户端是否在其计算机上设置了无效时间,每次都会获取最新的日期时间。您可以向受信任的时间服务器发出请求,如,但它仍然是一个请求…如果您不担心精度达到秒或毫秒级,您可以将服务器的渲染时间与页面加载到客户端的时间进行比较,然后将差异用作调整,但这是一种不准确的攻击。