2017-01-12 8 views
0

В окне оплаты Когда клиент нажимает кнопку оплаты, я хочу запустить таймер. И если обработка платежа занимает больше, чем, скажем, 5 секунд, я хочу перенаправить на страницу. Ниже я об этом подумал.Установить таймер на веб-сайте ASP.net mvc

[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 секунд, я хочу перенаправить пользователя на новую страницу.

+0

Что Исключение это бросать? Почему бы не сделать это как что-то на клиенте, где страница запрашивает перенаправление? Однако при любом решении вы не будете останавливать выполнение любой длительной задачи. Теперь, когда у вас есть это, пользователь должен будет дважды щелкнуть кнопку, чтобы что-нибудь сработать. – krillgar

+3

«Я получаю исключение» - как вы думаете, было бы полезно включить в сообщение хотя бы сообщение об исключении? – Igor

+0

@krillgar: Я начинаю пытаться учиться. Можете ли вы посоветовать мне, если это лучше сделать на стороне клиента. если да, то можете ли вы предоставить какую-либо ссылку. И я редактировал свой код. Видимо, мой подход неверен. – Unbreakable

ответ

2

Гораздо разумнее реализовать это на стороне клиента. Вы можете использовать JavaScript. Например, это может помочь вам:

Page Redirect after X seconds wait using JavaScript

JQuery Redirect to URL after specified time

+0

Должен ли я поместить этот код в свой файл cshtml под тегом скрипта? – Unbreakable

+0

Да, но лучше всего сделать новый javascript-файл, а затем ссылаться на него в файле cshtml. – MacakM

+0

В ссылке вы упомянули ее все на основе загрузки страницы. Но для меня таймер должен начинаться с нажатия кнопки. Кроме того, чтобы указать очевидное, я бы хотел, чтобы кнопка нажала, чтобы выполнить свою обычную операцию POST, как MVC, и нажала на функцию контроллера. – Unbreakable

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