给出以下代码:
[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。任何人都知道为什么会这样?
答案 0 :(得分:0)
这似乎是较旧版本的Newtonsoft.Json nuget程序包中的错误/问题。
我确认该软件包的版本9.0.1中存在该问题
此问题已在版本10.0.1中修复
就我而言,我正在执行的Entity Framework迁移正在等待更改时发生错误,但不是从Package Manager控制台执行。我发现这是因为相同的问题,导致所有属性都“丢失”的JsonIgnore属性。控制台命令“ Update-Database”和“ Add-Migration”仍然看到ForeignKey属性。但是,如果代码正在执行,则Entity Framework不会看到ForeignKey属性,而会引发未决的更改迁移错误。