0

在此处输入图像描述

我正在从 UI 向控制器发送事务请求并在控制器中处理该请求。

此过程可能会花费大约 10 秒的时间。

在处理交易时,用户可以取消交易。

所以我需要检查在每次提交之前是否点击了取消按钮。

我怀疑单击取消按钮时我无法将该值作为新请求传递,因为将创建新的控制器实例。

另一种选择是使用static。但是建议告诉我不要为控制器引入静态字段。

如何处理这种情况?(可能有一些令牌或仍然有一些简单的工作?)

4

1 回答 1

0

不确定您使用的是什么特定的 UI,但您可以通过单击取消按钮来终止请求。

如果您使用的是 javascript,则可以调用 abort (内容取自此处

var xhr = $.ajax({
    type: "POST",
    url: "some",
    data: "name=John&location=Boston",
    success: function(msg){
       alert( "Data Saved: " + msg );
    }
});

//kill the request
xhr.abort()

然后在 MVC 代码中绑定取消令牌并在调用提交之前检查它(或者更好的是使用异步 API 并传入取消令牌)。

public ActionResult Action(string param, CancellationToken token)
{
     // do your thing

     if (token.IsCancellationRequested)
     {
         // abort
     }

     // do your thing
}
于 2014-12-16T06:52:22.980 回答