我正在创建一个测验,我想计算用户在特定部分上花费的时间。我尝试计算页面加载时间和提交按钮单击之间的差异,但是一旦点击按钮,页面就会刷新(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
}
答案 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();
}
}