将异步结果生成到 ASP 分部视图



我在视图中使用 ajax 调用在PartialView中加载数据,而不会阻塞 UI。

$(function() {
     $.get( '@Url.Action("MyFunction", Model)', function( data ) {
                    $("#partialContainer").html(data);
                });
            }

Controller代码非常简单,Task.Delay将替换为对 Web 服务的另一个长时间运行的调用:

public ActionResult MyFunction(MyFunctionModel model)
{
      for (int i = 0; i < 4; i++) {
           Task.Delay(4000).Wait();    
      }
      return PartialView("PartialView", model);
}

我想做的是:

public ActionResult MyFunction(MyFunctionModel model)
{
          for (int i = 0; i < 4; i++) {
               Task.Delay(4000).Wait();    
               yield return PartialView("PartialView", model);
           }
}

但我知道我不能将yield运算符与ActionResult一起使用.

编辑:最终的想法是每次添加时显示结果,假设像飞行搜索引擎一样,而无需等待完整的元素列表。

你需要实现SingalR或长时间轮询。

如果您需要按照您提到的航班结果以渐进的方式更新您的 UI。