c# - InvalidOperationException:无法解析服务
问题描述
首先抱歉,如果我的英语不够好 XD。其次,我在 ASP.NET Core 2.0 上编程。当我启动我的 web 应用程序时,当我尝试转到我的应用程序的“分类”网页时,我得到了下一个错误。
InvalidOperationException:尝试激活“EduCloud.Controllers.UnitsController”时无法解析“EduCloud.Data.IClassInfo”类型的服务。
首先,对不起,如果代码太多。模型涉及的代码是
using System;
using System.Collections.Generic;
using System.Text;
namespace EduCloud.Data.Models
{
public class ClassInfo
{
public int Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string ClassVideoUrl { get; set; }
public string ClassHomeworkUrl { get; set; }
public string TestUrl { get; set; }
public virtual ApplicationUser User { get; set; }
public virtual Forum Forum { get; set; }
}
}
该模型与类有 1 级抽象
using EduCloud.Data.Models;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
namespace EduCloud.Data
{
public interface IClassInfo
{
ClassInfo GetById(int id);
IEnumerable<ClassInfo> GetAll();
IEnumerable<ClassInfo> GetFilteredClasses(Forum forum, string searchQuery);
IEnumerable<ClassInfo> GetFilteredClasses(string searchQuery);
IEnumerable<ClassInfo> GetClassesByForum(int id);
Task Add(ClassInfo classInfo);
Task Delete(int id);
Task EditClassContent(int id, string newContent);
}
}
接下来,这个IClass的方法在下一个类中
using EduCloud.Data;
using EduCloud.Data.Models;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EduCloud.Service
{
public class ApplicationClassService : IUnit
{
private readonly ApplicationDbContext _context;
public ApplicationClassService(ApplicationDbContext context)
{
_context = context;
}
public async Task Create(ClassInfo classInfo)
{
_context.Add(classInfo);
await _context.SaveChangesAsync();
}
public Task Delete(int classId)
{
throw new NotImplementedException();
}
public IEnumerable<Forum> GetAll()
{
return _context.Forums
.Include(forum => forum.Classes);
}
public Forum GetById(int id)
{
var forum = _context.Forums.Where(f => f.Id == id)
.Include(f => f.Classes ).ThenInclude(p => p.User)
//.Include(f => f.Classes).ThenInclude(p => p.Replies).ThenInclude(r => r.User)
.FirstOrDefault();
return forum;
}
public Task UpdateForumTitle(int classId, string newTitle)
{
throw new NotImplementedException();
}
}
}
最后是控制器
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using EduCloud.Data;
using EduCloud.Data.Models;
using EduCloud.Models.Classes;
using EduCloud.Models.Units;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
namespace EduCloud.Controllers
{
public class UnitsController : Controller
{
private readonly IUnit _unitService;
private readonly IForum _forumService;
private readonly IClassInfo _classService;
public UnitsController(IUnit unitService, IForum forumService, IClassInfo classService)
{
_unitService = unitService;
_forumService = forumService;
_classService = classService;
}
public IActionResult Index()
{
var units = _unitService.GetAll()
.Select(forum => new UnitsListingModel
{
Id = forum.Id,
Name = forum.Title,
});
var model = new UnitsIndexModel
{
UnitList = units
};
return View(model);
}
}
}
以及当我转到“分类”链接时尝试运行的视图代码
@model EduCloud.Models.Units.UnitsIndexModel
<h1>Unidades de Aprendizaje</h1>
<table class="table table-hover" id="forumIndexTable">
<tbody>
@foreach (var forum in Model.UnitList)
{
<tr>
<td>
<a asp-controller="Units" asp-action="ClassesList" asp-route-id="@forum.Id">
@forum.Name
</a>
</td>
</tr>
}
</tbody>
</table>
解决方案
推荐阅读
- qt - Qt Designer 中 QGraphicsView 的占位符图像
- linux - 如何执行此终端技巧?连名字都叫不出来
- sqlite - 如何在 SQFlite 中插入 POJO 对象和列表
- com - 如果在 COM 调用期间在本地进程外服务器上调用 TerminateProcess(),会发生什么 COM 错误?
- html - 按下时间过长,点击在 iPad 上不起作用
- c# - 在特定条件下合并两个数据表
- r - 首次上传文件时,Actionbutton 停止显示数据表
- sql - 如何使用最高父表的索引将记录及其所有相关记录从一个数据库复制到另一个数据库?
- r - readxl 或 tidyxl:从 Excel xlsx 读取时防止日期强制
- qt - 如何为 QCheckBox 制作粗体字体