javascript - 循环 'System.Threading.Tasks.Task<System.Collections.Generic.List' i 类型的对象时 foreach 语句中出现编译错误

标签 javascript c# asp.net-mvc foreach signalr

在使用 SignalR 的 Asp.Net 项目 MVC 中,我尝试迭代 Javascript 客户端中的 Service 返回的对象。对于以下代码中的 foreach 语句,我收到以下编译错误

foreach 语句无法对“System.Threading.Tasks.Task>”类型的变量进行操作,因为“System.Threading.Tasks.Task>”不包含“GetEnumerator”的公共(public)定义

有人可以建议在 View /服务调用中应该进行哪些更改吗?

查看代码

  @model  System.Threading.Tasks.Task<List<JobCurrentStatusDetails>>

   <script type="text/javascript">


                var connection = $.hubConnection();
                var hub = connection.createHubProxy("JobDetailsHub");
                hub.on('updateData',function(jSonRefreshData){
                    console.log(jSonRefreshData);
                });
                hub.invoke('NotifyUpdates').done(function(jSonRefreshData){

                    @Model = jSonRefreshData
                    @{int countTiles = 0;}
                    @foreach(item in Model)
                    {
                        if(item.color == "red")
                        {}
                         if(item.color == "green")
                         {}
  }
                });
    </script>

添加服务器端代码

 public async Task<List<JobCurrentStatusDetails>> NotifyUpdates()
        {
       var hubContext = lobalHost.ConnectionManager.GetHubContext<JobDetailsHub>    ();
       if (hubContext != null)
       {
           db =  DataAccess.DataAccessModels.GetDashboardCounts();

           return await hubContext.Clients.All.updateData(db);

       }
       else return null;
   }

Controller 代码如下:

public  ActionResult Index()
        {
            DataAccess da = new DataAccess();
            var jobDetailService = new JobDetailsService(da);

            return View(jobDetailService.NotifyUpdates());


        }

最佳答案

您正在返回一个任务作为模型。您可以这样做:

public List<JobCurrentStatusDetails> NotifyUpdates()
{
   var hubContext = lobalHost.ConnectionManager.GetHubContext<JobDetailsHub>();
   if (hubContext != null)
   {
       db =  DataAccess.DataAccessModels.GetDashboardCounts();

       return hubContext.Clients.All.updateData(db).Result;

   }
   else return null;
}

关于javascript - 循环 'System.Threading.Tasks.Task<System.Collections.Generic.List' i 类型的对象时 foreach 语句中出现编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34910166/

相关文章:

javascript - ASP.NET MVC 和 Angular 4 mini SPA - 页脚问题

c# - 获取特定页面类型的所有子级

c# - 您如何将验证消息组合在一起?

javascript - 移动浏览器和 100% x 100% 固定元素

JavaScript - 获取满足条件的数组元素

javascript - 如何将 django 变量从 html 页面传递到 javascript

c# - 消费者的 Amazon Kinesis KCL 客户端无法在 .NET 中运行

javascript - 没有 JSP 的 Spring Security/j_spring_security_check

c# - 在运行时设置 xmlrpc.net 服务 url

c# - C# 中的拖放排序 - 最佳算法