Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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
Asp.net mvc 3 我可以在ASP MVC中中途取消控制器请求吗?_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc 3 我可以在ASP MVC中中途取消控制器请求吗?

Asp.net mvc 3 我可以在ASP MVC中中途取消控制器请求吗?,asp.net-mvc-3,Asp.net Mvc 3,我对ASP MVC很陌生 我有一个菜单选项列表,用户可以选择。根据MVC架构,每个菜单选择触发一个控制器 但不幸的是,这些控制器中的一些需要一些时间来执行,以进行可见的更改。因为大数据需要绑定到网格,所以浏览器一直挂起(显示加载) 最坏的情况是,如果用户在一个耗时的菜单选项之后选择了一个可以轻松加载的选项 如果另一个控制器操作请求出现,是否有人可以帮助解决该问题? 现在是所有用户选择操作的总和 例如:如果用户选择菜单1,然后选择菜单2。我的Menu1控制器操作需要一些时间才能执行。此时,用户单击

我对ASP MVC很陌生

我有一个菜单选项列表,用户可以选择。根据MVC架构,每个菜单选择触发一个控制器

但不幸的是,这些控制器中的一些需要一些时间来执行,以进行可见的更改。因为大数据需要绑定到网格,所以浏览器一直挂起(显示加载)

最坏的情况是,如果用户在一个耗时的菜单选项之后选择了一个可以轻松加载的选项

如果另一个控制器操作请求出现,是否有人可以帮助解决该问题? 现在是所有用户选择操作的总和


例如:如果用户选择菜单1,然后选择菜单2。我的Menu1控制器操作需要一些时间才能执行。此时,用户单击菜单2,如果第一次单击,则很容易加载该菜单。但由于菜单2被点击,用户必须等待很长时间。

这有点旧,但我将尝试回答,因为我最近遇到了这个问题。如果您使用的是MVC 5,则可以为您取消其他请求。诀窍是使用异步控制器操作并添加CancellationToken参数

public async Task<ActionResult> MyReallySlowReport(CancellationToken cancellationToken)
{
    List<ReportItem> items;
    using (ApplicationDbContext context = new ApplicationDbContext())
    {
        items = await context.ReportItems.ToListAsync(cancellationToken);
    }
    return View(items);
}

public async Task

您应该使用ajax来执行请求,如果太长,请中止ajax请求。但服务器端仍将完成请求。而且,在一个动作中使用耗时的过程,即使您使用Ajax,也会锁定用户打开另一个动作,这是因为同一个会话一次锁定到一个请求中。我的建议是禁用ASP.NET会话并实现您自己的会话在ASP.NET会话中可以有多个请求在ASP.NET会话中有任何方法可以做到这一点。Net mvc4与.net4?当用户发送一个更具体的请求时,您如何从客户端触发取消,而不仅仅是导航?@ChrisHayes在这种情况下,您将通过对每个请求调用abort方法来取消请求@DavidPaquette问题“asp.net-mvc3”上有一个标签。因此,我猜您的回答不适用。我可以在Asp.NET web表单中执行此操作吗,你能回答这个问题吗?我正在尝试在不使用
async
的情况下取消请求。使用
async
是否可以并发请求?