Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.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/2/.net/25.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# 类在类中的.NET MVC模型_C#_.net_Asp.net Mvc - Fatal编程技术网

C# 类在类中的.NET MVC模型

C# 类在类中的.NET MVC模型,c#,.net,asp.net-mvc,C#,.net,Asp.net Mvc,我不知道技术名称,但我会解释的 我有一个名为Project的模型,它有一个名称和描述 每个项目都有多个任务 我有的是这样的东西 模型 控制器 public ActionResult Report (int id) { Project Report= new Project(); Report.Taskvm = from o in db.tasks where

我不知道技术名称,但我会解释的

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

每个项目都有多个任务

我有的是这样的东西

模型

控制器

        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项目)
{
@DisplayFor(modelItem=>item.Taskvm.Namevm)
@DisplayFor(modelItem=>item.Taskvm.Descriptionvm)

}
基于您的代码片段

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

  • 无法迭代Taskvm属性(不能循环)
  • 查询字符串不是获取列表,而是获取单个对象
  • 您没有在视图中循环浏览正确的属性
  • 要解决所有这些问题:

  • 更新项目模型,Taskvm属性

     public class Project
     {
         public String Namevm { get; set; }
         public String Descriptionvm { get; set; }
    
         public IEnumerable<Tasks> Taskvm { get; set; }
     }
    
  • 在控制器中,将查询更改为此注意ToList()

    Report.Taskvm = (from o in db.tasks
                             where o.project_id == id
                             select new Task { name = o.name, description=o.description })
                             .ToList();
    
  • 在您的视图中,您需要迭代Taskvm(Model.Taskvm)属性,而不是整个模型。使用以下命令:

    @foreach (var item in Model.Taskvm) 
       {
        @Html.DisplayFor(modelItem => item.Namevm ) 
        @Html.DisplayFor(modelItem => item.Descriptionvm) 
        <br />                                
    }
    
    @foreach(Model.Taskvm中的变量项)
    {
    @DisplayFor(modelItem=>item.Namevm)
    @DisplayFor(modelItem=>item.Descriptionvm)
    
    }

  • 什么是关系?看起来您应该将
    报告
    传递给视图…抱歉,它的报告(另一种语言)。。我已经更新了问题,所以,如果
    模型
    报告
    ,并且您想要迭代
    报告。Tasksvm
    ,您可能不想迭代
    模型
    ,而是…?嗯,我尝试过Model.Tasksvm,结果显示错误CS1061“IEnumerable”不包含“Project”的定义,并且找不到接受第一个“IEnumerable”类型参数的可访问扩展方法“Project”(是否缺少using指令或程序集引用?),显然,您页面上的
    @model
    IEnumerable
    ?如果是这种情况,您需要将传递给
    视图()
    的内容更改为
    IEnumerable
    ,而不仅仅是
    项目
    @foreach(模型中的var项)
    很好,但是在
    Taskvm
    上需要另一个
    foreach
    ,因此
    @foreach(item.Taskvm中的var任务)
    。感谢您的精彩解释。5颗星!!!我脑子里有了那盏灯。非常感谢。
     public class Project
     {
         public String Namevm { get; set; }
         public String Descriptionvm { get; set; }
    
         public IEnumerable<Tasks> Taskvm { get; set; }
     }
    
    using System.Collections.Generic;
    
    Report.Taskvm = (from o in db.tasks
                             where o.project_id == id
                             select new Task { name = o.name, description=o.description })
                             .ToList();
    
    @foreach (var item in Model.Taskvm) 
       {
        @Html.DisplayFor(modelItem => item.Namevm ) 
        @Html.DisplayFor(modelItem => item.Descriptionvm) 
        <br />                                
    }