Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.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
C# cshtml页面内的异步加载_C#_Asp.net_Asp.net Mvc_Razor_Asynchronous - Fatal编程技术网

C# cshtml页面内的异步加载

C# cshtml页面内的异步加载,c#,asp.net,asp.net-mvc,razor,asynchronous,C#,Asp.net,Asp.net Mvc,Razor,Asynchronous,可以在剃须刀内使用任务(系统线程)吗 我想做的是:我有一个表,我想异步填充 看看代码: @{ Func<dynamic, object> preenche = @<text> <tr><td>oi1</td><td>oi2</td></tr> </text>; } ... <tbody> @Task.Fa

可以在剃须刀内使用任务(系统线程)吗

我想做的是:我有一个表,我想异步填充

看看代码:

@{
    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>
@{
Func预紧=
@
oi1oi2
;
}
...
@Task.Factory.StartNew(()=>
{
foreach(模型中的Apontamento ap.apontamentos)
{
预紧(ap);
}
})
输出如下:
System.Threading.Tasks.Task


可能吗?或者我可以使用Ajax来实现我的目标?

您不应该在视图中这样做。执行异步操作,但当您开始渲染视图时,所有数据都应准备就绪。

如果您希望页面立即渲染并显示,然后在以后发生某些事情(例如操作需要5秒钟才能完成),则可以通过执行类似操作,在数据可用时更新页面(有关的更多信息)

在您的Razor视图中可以添加一些JavaScript:

<script type="text/javascript">
    $.getJSON('LongRunningAsyncTask', function (result) 
    {
        // Populate table or other actions with: result.Data
        // ...
    });
</script>

这不是一个答案,我也能想到UI场景,在页面加载后加载更多数据将是理想的,并将创建一个snappier接口。不清楚OP是否希望使用异步服务器处理或AJAX调用,因此我完全有可能回答另一个问题。但是我不知道您的其余评论如何与我要指出的是,如果您在服务器上执行异步处理,则在控制器中而不是在视图中执行。更重要的是,web场景中的异步操作旨在减少服务器负载和提高可伸缩性,而不是创建snappier接口。
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);
}