Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.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
Asp.net 将带有列表的ViewBag传递给foreach循环的视图_Asp.net_Asp.net Mvc_Asp.net Mvc 5_Viewbag - Fatal编程技术网

Asp.net 将带有列表的ViewBag传递给foreach循环的视图

Asp.net 将带有列表的ViewBag传递给foreach循环的视图,asp.net,asp.net-mvc,asp.net-mvc-5,viewbag,Asp.net,Asp.net Mvc,Asp.net Mvc 5,Viewbag,我正在通过Viewbag将查询结果从控制器传递到视图,但是当循环查看Viewbag结果时,我得到错误“object”不包含“Ratings”的定义,即使它在调试时显示。我没有为查询使用模型,因此无法强制转换列表 如何将查询列表或查询结果本身发送到视图,以便循环并提取数据 控制器 var AppQuery = (from ans in db.Answers join ques in db.Questions on ans.QuestionID equ

我正在通过Viewbag将查询结果从控制器传递到视图,但是当循环查看Viewbag结果时,我得到错误“object”不包含“Ratings”的定义,即使它在调试时显示。我没有为查询使用模型,因此无法强制转换列表

如何将查询列表或查询结果本身发送到视图,以便循环并提取数据

控制器

var AppQuery = (from ans in db.Answers
                        join ques in db.Questions on ans.QuestionID equals ques.QuestionID
                        join resp in db.Responses on ans.ResponseID equals resp.ResponseID
                        join sec in db.Sections on ques.SectionID equals sec.SectionID
                        where resp.ResponseID == ID && ques.SubSectionName != null
                        select new { SectionName = sec.SectionName, RatingAnswer = ans.RatingAnswer })
 .GroupBy(a => a.SectionName)
 .Select(a => new { SectionName = a.Key, Ratings = a.Sum(s => s.RatingAnswer) });


        ViewBag.Results = AppQuery.ToList();
查看

    @{var Results = ViewBag.Results;}

 @foreach (var item in Results)
                                        {
                                            var style = "active";
                                            var condition = "";

                                            if (item.Ratings >= 90)
                                            {
                                                style = "success";
                                                condition = "Excellent";
                                            }
                                            else if (item.Ratings < 50)
                                            {
                                                style = "danger";
                                                condition = "Critical";
                                            }
                                            else
                                            {
                                                style = "active";
                                                condition = "Stable";
                                            }
                                            <tr class="@style">
                                                <td>@item.SectionName</td>
                                                <td>@item.Ratings</td>
                                                <td>@condition</td>

                                            </tr>

                                        }
@{var Results=ViewBag.Results;}
@foreach(结果中的var项目)
{
var style=“活动”;
var条件=”;
如果(项目评级>=90)
{
style=“成功”;
条件=“极好”;
}
否则,如果(项目等级<50)
{
style=“危险”;
条件=“严重”;
}
其他的
{
style=“活动”;
条件=“稳定”;
}
@item.SectionName
@项目.评级
@状况
}

谢谢你的帮助

这是预期的行为!。因为您为ViewBag设置了匿名对象的集合

您应该使用强类型视图模型

public class RatingVm
{
  public string SectionName { set;get;}
  public int Ratings { set;get;}
}
在你的行动方法中

public ActionResult Create()
{
  var results= (from ans in db.Answers
                     join ques in db.Questions on ans.QuestionID equals ques.QuestionID
                     join resp in db.Responses on ans.ResponseID equals resp.ResponseID
                     join sec in db.Sections on ques.SectionID equals sec.SectionID
                     where resp.ResponseID == ID && ques.SubSectionName != null
                        select new { SectionName = sec.SectionName, 
                                     RatingAnswer = ans.RatingAnswer })
 .GroupBy(a => a.SectionName)
 .Select(a => new RatingVm { SectionName = a.Key, 
                             Ratings = a.Sum(s => s.RatingAnswer) }).ToList();
  return View(results);

}
现在,您的视图应该是强类型的,与我们从action方法传递的数据类型一致,action方法是
RatingVm

@model List<RatingVm>
<h1>Ratings</h1>
@foreach(var item in Model)
{
  <p>@item.SectionName</p>
  <p>@item.Ratings</p>
}
@型号列表
评级
@foreach(模型中的var项目)
{
@item.SectionName

@项目.评级

}
啊,这么简单,让我觉得自己很愚蠢。谢谢你的帮助。