c# mvc 5 添加控制器时出错

Posted

技术标签:

【中文标题】c# mvc 5 添加控制器时出错【英文标题】:c# mvc 5 error while adding a controller 【发布时间】:2017-02-03 05:02:12 【问题描述】:

在我的 mvc 项目中,我想使用实体框架添加一个带有视图的控制器。我正在使用本教程http://www.asp.net/mvc/overview/getting-started/introduction/accessing-your-models-data-from-a-controller

尽管我不断收到这个令人沮丧的错误

我多次重建我的项目。我尝试了一些我在互联网上找到的解决方案,例如Adding A New MVC 5 Controller with Views Using Entity Framework Scaffolding Error 或重新安装我的 nuget 包,重新启动 Visual Studio,检查我的 conecctiong 字符串(顺便说一句,这似乎没问题),添加新模型等。我不知道下一步该做什么,这就是我向您寻求帮助的原因。

我用:

Windows 7 上的 Visual Studio 2013 .NET Framework 4.6.2

我的型号代码:

 public class UserResModel
   
       [Display(Name = "ReservationID")]
       public int ReservationID  get; set; 

    [Display(Name = "Class")]
    public string ClassName  get; set; 

    [Display(Name = "When")]
    [DataType(DataType.Date)]
    [DisplayFormat(DataFormatString = "0:dd/MM/yyyy", ApplyFormatInEditMode = true)]
    public DateTime ClassWhen  get; set; 

    [Display(Name = "Cancel reservation")]
    public bool CancelRes  get; set; 

【问题讨论】:

你的模型有默认构造函数吗?能出示一下型号代码吗? 你这是什么意思?我正在用代码编辑我的问题 将您的网络项目设置为启动项目 不幸的是 id 没有帮助 :( 我仍然遇到同样的错误 你试过我下面的答案了吗? 【参考方案1】:

您需要将“Key”属性添加到您的 ReservationID 属性。脚手架在自动生成控制器代码时需要 Key 才能工作。

[Key]
[Display(Name = "ReservationID")]
public int ReservationID  get; set; 

添加后,重新构建项目并再次尝试搭建脚手架。

【讨论】:

不幸的是 id 没有帮助 :( 我仍然遇到同样的错误 如果您使用带有实体框架和视图选项的脚手架控制器,您还需要向您的 DbContext 类添加一个 DbSet 自动属性(在默认项目中,这称为 ApplicationDbContext)一次添加它进行重建并重试。

以上是关于c# mvc 5 添加控制器时出错的主要内容,如果未能解决你的问题,请参考以下文章

C# .NET 5.0 MVC JWT 中间件授权标头

在 C# WebApp 中显示 PDF 文档时出错

控制器中的 Asp.Net MVC 5 ModelState 具有索引、添加、编辑

如何使数组值在 C# MVC 控制器中可读

在 ASP.NET MVC 中使用 AJAX 方法时使用 C# 控制器重定向到页面

使用 MVC 5 向 Kendo UI 控制器添加父级和子级