Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.net mvc网站中设置计时器_C#_Asp.net Mvc_Asp.net Mvc 4_Asp.net Mvc 3_Asp.net Mvc 5 - Fatal编程技术网

C# 在ASP.net mvc网站中设置计时器

C# 在ASP.net mvc网站中设置计时器,c#,asp.net-mvc,asp.net-mvc-4,asp.net-mvc-3,asp.net-mvc-5,C#,Asp.net Mvc,Asp.net Mvc 4,Asp.net Mvc 3,Asp.net Mvc 5,在付款窗口中,当客户点击付款按钮时,我想启动计时器。如果支付过程花费的时间超过5秒,我想重定向到一个页面。下面是我能想到的 [HttpPost] [ValidateAntiForgeryToken] public ActionResult SavePayment(PaymentFormMV data) { if (Session["startTime"] == null) {

在付款窗口中,当客户点击付款按钮时,我想启动计时器。如果支付过程花费的时间超过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);
}

但当我计算滴答声时,它并不像我预期的那样工作。我需要一些茶还是什么的。我是新手,请指导我。我只想看看按钮点击和当前时间之间的持续时间。如果超过5秒,我想将用户重定向到新页面

在客户端实现这一点更为合理。您可以使用JavaScript。例如,这可能会帮助您:


在客户端实现这一点更为合理。您可以使用JavaScript。例如,这可能会帮助您:


在控制器中,只需使用一些类似于贝娄的东西

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


希望它能帮助你,海达尔

在控制器中,只需使用一些类似于贝娄的东西

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



希望它能帮助你,海达尔

它抛出了什么异常?为什么不在页面请求重定向的客户端上这样做呢?但是,无论使用哪种解决方案,都不会停止执行任何长时间运行的任务。按照你现在的设置方式,用户必须点击两次按钮才能让任何东西正常工作。我遇到了异常-你认为在你的问题中至少包含异常消息会有用吗?@krillgar:我是初学者,正在尝试学习。你能指导我在客户方面做是否更好吗。如果是这样,你可以提供任何链接。我已经编辑了我的代码。显然,我的方法是不正确的。在使用Igor的建议修复代码后,如果您的方法在6秒以上被调用,您应该将ifx==5更改为ifx>=5。它会引发什么异常?为什么不在页面请求重定向的客户端上这样做呢?但是,无论使用哪种解决方案,都不会停止执行任何长时间运行的任务。按照你现在的设置方式,用户必须点击两次按钮才能让任何东西正常工作。我遇到了异常-你认为在你的问题中至少包含异常消息会有用吗?@krillgar:我是初学者,正在尝试学习。你能指导我在客户方面做是否更好吗。如果是这样,你可以提供任何链接。我已经编辑了我的代码。显然,我的方法是不正确的。在您使用Igor的建议修复代码后,您应该将ifx==5更改为ifx>=5,以防您的方法在6秒钟后被调用。我是否要将此代码放在我的cshtml文件的脚本标记下?是的,您可以,但最好的做法是创建新的javascript文件,然后在您提到的链接中的cshtml文件中引用它,所有这些都基于页面负载。但对我来说,计时器应该在点击按钮时启动。另外,为了说明一个明显的问题,我希望按钮点击执行其正常的POST操作,就像MVC一样,并点击控制器函数。。。客户端和服务器端执行之间存在差异。我强烈建议您阅读一些Javascript和jQuery的基本用法,例如,在上一篇文章中,您可以很容易地将其应用到您的应用程序中:我是否应该将此代码放在脚本标记下的cshtml文件中?是的,您可以,但最好的做法是创建新的javascript文件,然后在您提到的链接中的cshtml文件中引用它,所有这些都基于页面负载。但对我来说,计时器应该在点击按钮时启动。另外,为了说明一个明显的问题,我希望按钮点击执行其正常的POST操作,就像MVC一样,并点击控制器函数。。。这是客户端和服务器端执行之间的区别。我强烈建议您阅读一些Javascript和jQuery的基本用法,例如,在上,您可以轻松地将其应用于您的应用程序: