可以在 Razor 中使用 Task (System.Threading) 吗??
我正在尝试做的是:我有一个要异步填充的表。
看代码:
@{
Func<dynamic, object> preenche =
@<text>
<tr><td>oi1</td><td>oi2</td></tr>
</text>;
}
...
<tbody>
@Task.Factory.StartNew(() =>
{
foreach(Apontamento ap in Model.apontamentos)
{
preenche(ap);
}
})
</tbody>
输出就是这样:System.Threading.Tasks.Task
这可能吗?或者我可以只使用 Ajax 实现我想做的事情?
最佳答案
如果您希望页面立即呈现并出现,然后再发生一些事情(比如一个操作需要 5 秒才能完成),那么您可以通过执行以下操作让页面在数据可用时更新(更多关于 .getJSON 的信息)。
在您的Razor View 中,您可以添加一些 JavaScript:
<script type="text/javascript">
$.getJSON('LongRunningAsyncTask', function (result)
{
// Populate table or other actions with: result.Data
// ...
});
</script>
然后在您的 Controller 中,您将执行如下任务:
public JsonResult LongRunningAsyncTask()
{
// Show this is async and won't render straight away...
System.Threading.Thread.Sleep(5000);
// Build up our view model
var viewModel = new TestViewModel();
// Send back as a Json result
var result = new JsonResult();
result.Data = viewModel;
return Json(result, JsonRequestBehavior.AllowGet);
}
关于c# - 在 cshtml 页面内异步加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16063997/