1

次のコードがあるとします。

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

DataAnnotationsModelMetadataProvider.CreateMetadata が ASP.NET MVC によって呼び出され、次の呼び出しを実行する場合:

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

CreateMetadata に渡される属性のリストには、[Display] 属性 (または [JsonIgnore] については [JsonIgnore]) が含まれていません。[JsonIgnore] を削除すると、[Display] が見つかり、CreateMetadata に渡されます。なぜこれが起こっているのか誰にも分かりますか?

4

1 に答える 1

0

これは、Newtonsoft.Json nuget パッケージの古いバージョンのバグ/問題のようです。
パッケージのバージョン 9.0.1 に問題があることを確認しました

この問題は、バージョン 10.0.1 で修正されています。

私の場合、実行時に Entity Framework migration pending changes エラーが発生しましたが、パッケージ マネージャー コンソールからではありませんでした。これは、JsonIgnore 属性によってすべての属性が「失われる」という同じ問題によるものであることがわかりました。しかし、コードが実行されていた場合、Entity Framework は ForeignKey 属性を認識せず、保留中の変更の移行エラーをスローしました。

于 2020-01-31T21:14:26.267 に答える