【问题标题】:Cannot retrieve table rows from ASP.Net core razor page无法从 ASP.Net 核心剃须刀页面检索表行
【发布时间】:2020-12-08 08:08:32
【问题描述】:

我是 C# 和 ASP.Net 核心剃须刀页面的新手。我认为这是一个简单的问题,但经过几个小时我仍然无法解决它。

我(目前)将我的业务逻辑(例如维护逻辑)放在 root/BLL/MaintenanceBLL/Maintenance.cs 中

尝试从 Maintenance.cs 读取维护表中的记录。 我得到了错误

CS0030 无法将类型“Club.Models.Maintenance”转换为 '俱乐部.BLL.MaintenanceBLL.Maintenance'

VS2019 在代码中对 ForEach 一词进行了红线标记。 我无法解决此错误。任何帮助将不胜感激。

我的代码是:

Namespace Club.BLL.MaintenanceBLL
{
    public class Maintenance
    {
        private readonly Club.Data.ApplicationDbContext _context;

        public Maintenance(Club.Data.ApplicationDbContext context)
        {
            _context = context;
        }
        public Maintenance()
        {
        }
      
        public void DoMaintenance()
        {
            //Parse Maintenance table and action those items
            //where Active=True and ActionDate has passed
           
            var maintenances = _context.Maintenance;
            foreach (Maintenance m in maintenances)
            {
                //do something
            }
        }
    }
}

【问题讨论】:

  • 问题是你有两个不同的类,每个类都命名相同:Maintenance。一种解决方案是限定名称,例如foreach (Club.Models.Maintenance m in maintenances) {} 。更好的解决方案是为每个不同的类赋予自己的名称,例如重命名您的示例 class MaintenanceBLL

标签: c# asp.net-core razor-pages


【解决方案1】:

使用var 自动检测类似的类型

foreach (var m in maintenances)

foreach (Club.Models.Maintenance m in maintenances)

原因是你必须有两个Maintenance 类,一个在namespace Club.Models 下,另一个在namespace Club.BLL.MaintenanceBLL 下。

由于您当前的代码在Namespace Club.BLL.MaintenanceBLL; 下,当您编写Maintenance 时,它将尝试在当前namespace 或您在using ... 中提到的所有namespace 下查找Maintenance m in maintenances 类。

您尚未添加using Club.Models;,因此它不会找到Club.Models.Maintenance,您的foreach (Maintenance m in maintenances) 将被视为Club.BLL.MaintenanceBLL.Maintenance

但是您的_context.Maintenance 将是DbSet<Club.Models.Maintenance>,因此当您编写foreach (var m in maintenances) 时,它将期望与Club.Models.Maintenance 对象循环。你提到了Maintenance,它被认为是Club.BLL.MaintenanceBLL.Maintenance,所以你的编译器显示red line有错误。

【讨论】:

  • 感谢 Karan 和 paulsm4。非常感激。我会消化你的 cmets 并让你知道会发生什么。感谢您的反馈。
  • 是的,我现在明白了,可以继续我的旅程了。感谢您的及时回复。干杯......并保持安全
猜你喜欢
  • 2020-11-09
  • 1970-01-01
  • 2021-01-05
  • 2019-06-13
  • 1970-01-01
  • 2019-01-19
  • 2021-10-07
  • 1970-01-01
  • 2019-05-29
相关资源
最近更新 更多