1

我不知道技术名称,但我会解释一下。

我有一个名为 Project 的模型,它有一个名称、描述。

每个项目都有多个任务。

我所拥有的是这样的

模型

 public class Project
    {
        public String Namevm { get; set; }
        public String Descriptionvm { get; set; }

        public Tasks Taskvm { get; set; }

    }

 public class Task
    {
        public String Namevm { get; set; }
        public String Descriptionvm { get; set; }

    }

控制器

        public ActionResult Report (int id)
        {
            Project Report= new Project();

            Report.Taskvm = from o in db.tasks
                            where o.project_id == id
                            select new Task { name = o.name, description=o.description };
 
            Report.Namevm = "NAME OF PROJECT";
            Report.Descriptionvm= "DESCRIPTION OF PROJECT";
            return View(Report);

        }

如何打印 Report.Namevm 和 Report.Descriptionvm

并迭代所有任务?

我试过这个但没有用

看法



        @foreach (var item in Model) 
          {
           @Html.DisplayFor(modelItem => item.Taskvm.Namevm ) 
           @Html.DisplayFor(modelItem => item.Taskvm.Descriptionvm) 
           <br>                                
        }

4

2 回答 2

1

怎么了?

  1. 您的 Taskvm 属性无法迭代(您无法循环遍历它)。
  2. 查询字符串不是获取列表而是获取单个对象。
  3. 您没有在视图中循环访问正确的属性。

要解决这一切:

  1. 更新您的项目模型,Taskvm 属性

     public class Project
     {
         public String Namevm { get; set; }
         public String Descriptionvm { get; set; }
    
         public IEnumerable<Tasks> Taskvm { get; set; }
     }
    

IEnumerable<> 将需要以下命名空间

using System.Collections.Generic;
  1. 在您的控制器中,将您的查询更改为此注释 ToList()

    Report.Taskvm = (from o in db.tasks
                             where o.project_id == id
                             select new Task { name = o.name, description=o.description })
                             .ToList();
    
  2. 在您看来,您需要迭代Taskvm (Model.Taskvm)属性,而不是整个模型。用这个:

    @foreach (var item in Model.Taskvm) 
       {
        @Html.DisplayFor(modelItem => item.Namevm ) 
        @Html.DisplayFor(modelItem => item.Descriptionvm) 
        <br />                                
    }
    
于 2020-09-29T11:02:26.253 回答
0

根据您的代码片段

@foreach (var item in Model) 
{
       @Html.DisplayFor(modelItem => item.Taskvm.Namevm ) 
       @Html.DisplayFor(modelItem => item.Taskvm.Descriptionvm) 
       <br>                                
}

还有你的要求

如何打印 Report.Namevm 和 Report.Descriptionvm

Model是类的一个实例Project

请将属性Taskvm从更改TasksIEnumerable<Task>(或至少定义Tasks类似列表的包装器。通过这种方式,您可以使用发布的代码段之类的内容进行迭代。

遍历TasksvmIEnumerable

@foreach (var item in Model.Tasksvm) 
{
    @Html.DisplayFor(modelItem => item.Namevm ) 
    @Html.DisplayFor(modelItem => item.Taskvm.Descriptionvm) 
   <br>           
                                      
}
 
于 2020-09-28T21:17:21.183 回答