我正在从 UI 向控制器发送事务请求并在控制器中处理该请求。
此过程可能会花费大约 10 秒的时间。
在处理交易时,用户可以取消交易。
所以我需要检查在每次提交之前是否点击了取消按钮。
我怀疑单击取消按钮时我无法将该值作为新请求传递,因为将创建新的控制器实例。
另一种选择是使用static
。但是建议告诉我不要为控制器引入静态字段。
如何处理这种情况?(可能有一些令牌或仍然有一些简单的工作?)
我正在从 UI 向控制器发送事务请求并在控制器中处理该请求。
此过程可能会花费大约 10 秒的时间。
在处理交易时,用户可以取消交易。
所以我需要检查在每次提交之前是否点击了取消按钮。
我怀疑单击取消按钮时我无法将该值作为新请求传递,因为将创建新的控制器实例。
另一种选择是使用static
。但是建议告诉我不要为控制器引入静态字段。
如何处理这种情况?(可能有一些令牌或仍然有一些简单的工作?)
不确定您使用的是什么特定的 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
}