【问题标题】:foreach statement cannot operate on variables of type 'Customers' because no a public instance definition for 'GetEnumerator'foreach 语句无法对“客户”类型的变量进行操作,因为没有“GetEnumerator”的公共实例定义
【发布时间】:2019-04-28 23:51:04
【问题描述】:

我正在尝试将 ViewResult 中的可枚举客户对象发送到客户的索引视图。但我无法在视图页面上将 foreach 与 Model 一起使用。 与模型相关的错误说 -

“foreach 语句无法对'Customers' 类型的变量进行操作,因为'Customers' 不包含'GetEnumerator' 的公共实例定义”

我尝试用数组切换代码,但问题仍然存在

public class Customers
    {
        public int Id { get; set; }
        public string Name { get; set; }


    }

//Customer Controller
public class CustomersController : Controller
    {

        public IActionResult Index()
        {
            var customers = GetCustomers();
            return View(customers));
        }

        public IActionResult Details(int id)
        {
            var customer = GetCustomers().SingleOrDefault(c => c.Id == id);

            return View(customer);

        }

         private IEnumerable<Customers> GetCustomers()
         {
             var customer =  new List<Customers>
             {
                 new Customers { Id = 1, Name = "John Smith"},
                 new Customers { Id = 2, Name = "Mary Williams"}
             };

            return customer;
         }


    }

//View page Index

 @foreach (var customer in Model)
        {
            <tr>
                <td><a asp-area="" asp-controller="Customers" asp-action="Details">@customer.Name</a></td>
            </tr>
        }

The error displayed Under Model 当 foreach 语句执行时,它应该相应地输出客户的姓名

【问题讨论】:

  • SingleOrDefault 不会产生集合,它是单个 Customers。如果您想要一个集合,请改用Where,即使只有一项。

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


【解决方案1】:

鉴于您将模型描述为单个对象Customer

改变你的看法:

@model IEnumerable<Vidly.Model.Customer>

或者:

@model List<Vidly.Model.Customer>

【讨论】:

  • 谢谢..那行得通!...但是现在出现一个新的内部错误:传递到 ViewDataDictionary 的模型项的类型为'System.Collections.Generic.List1+Enumerator[Vidly.Models.Customers]', but this ViewDataDictionary instance requires a model item of type 'System.Collections.Generic.IEnumerable1[Vidly.模型.客户]'。
  • @WesMes 更改为 List
  • 我将其更改为 List.. 但错误仍然存​​在:ViewDataDictionary instance requires a model item of type 'System.Collections.Generic.List`1[Vidly.Models.Customers]'
猜你喜欢
  • 2020-10-21
  • 1970-01-01
  • 1970-01-01
  • 2018-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-08
  • 2016-03-27
相关资源
最近更新 更多