ASP.NET 秒表保持在 0
本文关键字:NET ASP | 更新日期: 2023-09-27 17:56:40
因此,作为作业的一部分,我试图粗略地计算使用 CSharp 在 ASP.NET Web 窗体项目中审查和完成事务所需的时间。
在我的ASPX页面中,我显示了购物车中对象的详细信息。
并且有一个按钮可以确认结帐并完成结帐。
我需要计算的是自页面加载到确认结帐的时间。
这里有两个事件:page_load
和checkoutbutton_click
所以在文件背后的代码中,我是
public partial class CheckoutReview : System.Web.UI.Page
{
public Stopwatch sw = new Stopwatch();
protected void Page_Load(object sender, EventArgs e)
{
sw.Start();
//... code
}
protected void checkoutbutton_click(object sender, EventArgs e)
{
//...code
sw.Stop();
// in the database i am then storing the elapsedMilliSeconds of the stopwatch
}
然而,问题是使用此代码,经过的时间始终保持为0。但是,如果我将相同的秒表放在checkoutbutton_click()
中,则stopwatch
工作正常。
有人可以解释一下我在这里做错了什么吗?
每次将页面回发到服务器时,都会创建类CheckoutReview
的新实例...因此,您看到的是回发类创建与事件处理程序之间的时间。
您必须记住,对服务器的每个请求(无论是原始页面请求还是回发)都是对服务器的单独调用。 诸如 Session
和 ViewState
之类的内容允许您在这些请求之间使用数据。
我建议您在初始加载时将当前时间存储在页面的ViewState
中,然后在事件处理程序中检查TimeSpan
差异......
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
// Only store on first visit to the page
ViewState["pageLoadTime"] = DateTime.Now;
}
}
protected void checkoutbutton_click(object sender, EventArgs e)
{
TimeSpan diff = DateTime.Now - (DateTime)ViewState["pageLoadTime"];
}