【问题标题】:My foreach statement is outputting 2 errors我的 foreach 语句输出 2 个错误
【发布时间】:2019-05-22 11:11:32
【问题描述】:

当我尝试使用 foreach 语句输出表时,它会输出 2 个错误,指出 MovieViewModel 和 MovieVM 不存在。

这是 Index.cshtml 文件的一部分:

  @foreach (MovieViewModel item in MovieVM)
  {
    <tr>
      <td>@item.MovieName</td>
      <td>@item.MovieCategory</td>
      <td>@item.MovieYear
      <td>@item.MoviePrice</td>
    </tr>
  }
</table>

这是 MoviesController.cs 文件的一部分:

  List<MovieViewModel> MovieVM = new List<MovieViewModel>
  {
    new MovieViewModel {
      MovieID = movie.MovieID,
      MovieName = movie.MovieName,
      MovieDescription = movie.MovieDescription,
      MoviePrice = movie.MoviePrice,
      MovieCategory = movie.MovieCategory,
      MovieYear = movie.MovieYear
    },
  };

  return View(MovieVM);
}

它输出这两个关于foreach的错误:

“类型或命名空间‘EmployeeViewModel’不存在于 命名空间“WebApplication3.Models”(您是否缺少程序集 参考?)”

“当前上下文中不存在名称‘MovieVM’”

【问题讨论】:

  • MovieViewModel item in MovieVM 没有意义。 MovieVM 是在您的操作方法中声明的,而不是在视图中。它们是不同的上下文。我猜你可能想访问模型?在这种情况下使用MovieViewModel item in Model
  • 至于另一个错误,您显示的代码在任何地方都没有提到EmployeeViewModel,所以问题一定来自您没有显示的东西。该错误应该告诉您它发生的行号。无论如何,听起来您可能在视图中缺少using 声明。要么那个,要么你打错字并引用了错误的类
  • 你可以在你的views文件夹&lt;add namespace="Example.ViewModels" /&gt;中添加缺少的命名空间&lt;add namespace="Example.ViewModels" /&gt;
  • 我也无法弄清楚你是如何得到EmployeeViewModel不存在的。除非您在您的视图中提到了这一点,或者正如@ADyson 所说的那样打错了
  • 我将 MovieVM 更改为 Model,该错误消失了,但另一个错误仍未修复。它一直说缺少参考。是不是某些 using 语句导致我出现此错误?

标签: c# asp.net asp.net-mvc razor


【解决方案1】:

您必须在视图中定义模型类型。

@model IEnumerable<MovieViewModel>

@foreach (var item in Model)
{
   <tr>
    <td>@item.MovieName</td>
    <td>@item.MovieCategory</td>
    <td>@item.MovieYear</td>
    <td>@item.MoviePrice</td>
   </tr>
}

示例:https://dotnetfiddle.net/GA0yHD

【讨论】:

  • 我的代码和你的很相似,唯一的区别是在控制器中,我从数据库中获取数据,它不是自定义的。对于beeing数据库数据,我有什么需要改变的吗?也许是一个目录或什么?
  • 嗨@DiogoTeixeira。真正的区别在于视图。我将IEnumerable&lt;MovieViewModel&gt; 声明为@model 并将foreach 设为Modelnot MovieVM(您的变量名)。视图不知道控制器中声明的变量。
  • 我已经尝试了很多次,并且出现了同样的错误,我有 @model IEnumerable 并且我在模型中有 var 项,但它仍然只输出 1 条记录。
  • @DiogoTeixeira 有多少条记录返回数据库?在示例中,您可以看到如何呈现所有记录 dotnetfiddle.net/GA0yHD 。现在显示 1 条记录而不是以前的错误
  • 一个更新,我试图创建一个详细信息视图,当我试图编写@model 时,它只出现了类,不应该出现模型吗?
【解决方案2】:

这个数据库连接和错误有什么关系吗?

 public ActionResult Index()
    {
        PAPEntities db = new PAPEntities();
        MoviesData movie = db.MoviesData.SingleOrDefault(x => x.MovieID == 1);

        List<MovieViewModels> MovieVM = new List<MovieViewModels>
            {
                new MovieViewModels {
                 MovieID = movie.MovieID,
                 MovieName = movie.MovieName,
                 MovieDescription = movie.MovieDescription,
                 MoviePrice = movie.MoviePrice,
                 MovieCategory = movie.MovieCategory,
                 MovieYear = movie.MovieYear
                    },
        };


        return View(MovieVM);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-08
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多