c# - 在 cshtml 页面内异步加载

标签 c# asp.net asp.net-mvc razor asynchronous

可以在 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/

相关文章:

asp.net - 从 asp.net mvc 下拉列表中获取值

c# - 如何访问基类的部分成员

c# - Facebook 相册创建和照片上传

c# - Unicode 字符串

c# 是否可以创建这样的委托(delegate)?

javascript - MVC jquery 自动完成多个值仅适用于第一次

c# - System.ComponentModel - 忽略属性

asp.net - 如何在 ASP.NET 的 DetailsView 中创建自定义按钮?

javascript - 为什么我的自定义验证器不会触发?

c# - 在 ASP.NET MVC 中动态生成许多路由...这是一个完全糟糕的主意吗?