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/