1

给定以下代码:

    [JsonIgnore]
    [Display(Name = "Loan Cap")]
    public virtual string SomeProperty { get; protected set; }

当 ASP.NET MVC 调用 DataAnnotationsModelMetadataProvider.CreateMetadata 以完成以下调用时:

@Html.DisplayNameFor(model => model.SomeAttribute)

传递给 CreateMetadata 的属性列表不包括 [Display] 属性(或就此而言的 [JsonIgnore])。如果我删除 [JsonIgnore],则找到 [Display] 并将其传递给 CreateMetadata。有人知道为什么会这样吗?

4

1 回答 1

0

这似乎是旧版本 Newtonsoft.Json nuget 包中的错误/问题。
我确认该问题存在于软件包的 9.0.1 版本中

此问题已在版本 10.0.1 中修复

就我而言,我在执行时遇到实体框架迁移挂起更改错误,但不是来自包管理器控制台。我发现这是因为同样的问题,导致所有属性“丢失”的 JsonIgnore 属性控制台命令“Update-Database”和“Add-Migration”仍然看到 ForeignKey 属性。但是,如果代码正在执行,Entity Framework 看不到 ForeignKey 属性并抛出了一个挂起的更改迁移错误。

于 2020-01-31T21:14:26.267 回答