簡體   English   中英

在ASP.net MVC網站中設置計時器

[英]Set timer in ASP.net mvc website

在付款窗口中當客戶單擊付款按鈕時,我想啟動一個計時器。 如果付款處理花費的時間超過了5秒鍾(例如5秒),我想重定向到頁面。 以下是我能想到的。

 [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult SavePayment(PaymentFormMV data)
        {
            if (Session["startTime"] == null)
            {
                Session["startTime"] = DateTime.Now;
            }

            var ticksRemaining = DateTime.Now - (DateTime)Session["startTime"];
           int x = int.Parse(ticksRemaining.ToString()); // Format Unhandled exception
            if(x == 5)
            {
                return RedirectToAction("Index", "Home");
            }
            // Payment Logic Here to 3rd Party API
             return View("PaymentConfirmation", returnData);
}

但是,當我計算ticksRemaining時,它沒有按我預期的那樣工作。 我在這里需要一些治療嗎? 我是新手,請指導我。 我只想查看單擊按鈕和當前時間之間的持續時間。 如果超過5秒,我想將用戶重定向到新頁面。

在客戶端實現這一點更為合理。 您可以使用JavaScript。 例如,這可以幫助您:

X秒鍾后使用JavaScript等待頁面重定向

jQuery在指定時間后重定向到URL

TimeSpan ticksRemaining = DateTime.Now - (DateTime)Session["startTime"];
int x = ticksRemaining.TotalSeconds;

在控制器中只需使用下面的東西

public ActionResult YourcurrentAction()
{
   TempData["msg"] = "Your desire message here";
   return RedirectToAction("Action_Which_You_Gonna_Redirect_To", "YourControlName");
}

現在在重定向操作中使用以下代碼

<center> <h2> @TempData["msg"].ToString() </h2> </center>
 @TempData.Remove("msg")

    <script type="text/javascript">
        window.setTimeout(function () {
            window.location.href = "Your_Desire_Link_To_Redirect";
        }, 5000);
    </script>

如果只需要客戶端,請使用我的代碼第二部分。 其他明智的選擇是兩者都用,但是需要的方式。

順便說一句,請記住,如果要在不同動作之間移動,則必須使用TempData來存儲示例中的message等值。 並記住將其刪除以釋放使用后的內存。 否則,請使用ViewBag。

希望對您有幫助,蓋達爾;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM