c# - MVC View 脚手架不适用于通用基类?

标签 c# asp.net asp.net-mvc visual-studio generics

Visual Studio 2015 中内置的 MVC View 脚手架是否无法与包含通用 ID 的继承基类一起使用?简单测试用例:

public abstract class BaseEntity
{
}

public abstract class Entity<TKey> : BaseEntity
{
    public TKey Id { get; set; }
}

public class Country : Entity<int>
{
    public string Name { get; set; }
    public string CountryCode { get; set; }
}

尝试使用 Country 实体创建脚手架 View (例如,列出、创建、编辑、删除)会导致以下错误弹出窗口:

运行所选代码生成器时出错:“方法或操作未实现。”

如果我删除 TKey 类型参数并通过为 Id 定义固定类型使 Entity 成为非泛型,那么我就可以构建 View 。

我知道在这个简单的例子中,我并没有因为拥有通用基类而节省很多工作。我也知道“最佳实践”是在您的 View 中使用 View 模型而不是域模型。但是,我想了解为什么使用具有泛型类型的基类会导致脚手架出现问题。

最佳答案

我也遇到了那个错误,发现它已经在 Microsoft Connect 上报告过。我们目前唯一的选择似乎是:

  • 通过临时移除继承从 Controller 生成 View (虽然这不是一个好主意,但可以避免浪费很多时间)
  • 等待微软的修复

注意:似乎同样的问题影响了 Visual Studio 2013(更新 5),但我没有找到任何错误跟踪器条目。

如果您想关注错误修复的进展或向支持团队提供更多信息,您可以访问 Microsoft 的错误跟踪器: https://connect.microsoft.com/VisualStudio/feedback/details/2187798/mvc-view-scaffolding-not-working

关于c# - MVC View 脚手架不适用于通用基类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34045384/

相关文章:

asp.net - ASP.NET web.config 文件中的环境变量

c# - 如何清除文本框保存的密码和用户名?

c# - 在单元测试中设置 HttpContext.Current.Application 键

c# - 调试实时 ASP.net 网站

asp.net-mvc - 如何构建中型 MVC 应用程序

asp.net-mvc - 使用 LEADTOOLS 将 doc 转换为 pdf

c# - cpanel远程连接mysql数据库

c# - 'string' 不包含 C# 中的/错误定义

c# - 未知项目类型 GUID

c# - 安全访问部分属性