我在视图中使用 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。