asp.net C#

时间:2017-03-21 08:53:58

标签: c# asp.net

我正在创建一个测验,我想计算用户在特定部分上花费的时间。我尝试计算页面加载时间和提交按钮单击之间的差异,但是一旦点击按钮,页面就会刷新(AutoPostBack=true),差异为零。有没有办法计算时间。

以下是我正在使用的以下代码。

protected void Page_Load(object sender, EventArgs e)
{
    dtAlgebraLoad = DateTime.Now;
    lblTime.Text = dtAlgebraLoad.ToString();
}

protected void btnAlgebraNext_Click(object sender, EventArgs e)
{
    dtAlgebraNext = DateTime.Now;
    //timeSpan = dtAlgebraNext.Subtract(dtAlgebraLoad);
    Label1.Text = dtAlgebraNext.ToString();
    //Cal time duration between page and button Click
}

5 个答案:

答案 0 :(得分:0)

您可以将值存储在Session中,而不是尝试在按钮单击时调用javascript函数并在该函数中实现必要的逻辑,并使用

将计算的差异绑定到标签
  

的document.getElementById( “Label1的”)

答案 1 :(得分:0)

由于Web客户端断开连接,我会存储用户输入该部分的开始日期/时间,然后存储与该部分交互时所有后续调用的LastActivity日期。这将允许您查看用户上次何时做了什么以及何时开始,为您提供持续时间,否则持续时间可能会保持开放状态。

答案 2 :(得分:0)

这是一个纯JS解决方案,用于显示已用时间(使用jQuery显示它)。让这段代码在页面加载时运行。如果将结果绑定到输入标记,则还可以将其发布回服务器。

优点是用户始终可以看到当前缩短的时间。

var start = new Date();

setInterval(function() {
    var msElapsed = new Date() - start;
    var dateObj = new Date(msElapsed);
    var elapsedTime = dateObj.toISOString().substr(11, 8);
    $('#elapsedTimeDisplay').val(elapsedTime);
}, 1000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>

<label for="elapsedTimeDisplay">Elapsed time:</label>
<input id="elapsedTimeDisplay" type="text" readonly="readonly"/>

答案 3 :(得分:0)

在aspx中添加隐藏字段

uwait(delay)

我的页面加载

<input type="hidden" runat="server" id="hdnStartTime">

使用protected void Page_Load(object sender, EventArgs e) { if (Page.IsPostBack == false) { hdnStartTime.Value = DateTime.Now; } } 查找差异。

答案 4 :(得分:-1)

试试这个

 protected void Page_Load(object sender, EventArgs e)
 {
   if (Page.IsPostBack == false)
   {
      dtAlgebraLoad = DateTime.Now;
      lblTime.Text = dtAlgebraLoad.ToString();
   }
 }