編集1:
私はいくつかの調査を行ったので、質問を簡単にしたいと思います:
動的オブジェクトを持つモデルが必要です。
public dynamic AdditionRuntimeData;
このオブジェクトは、実行時にデータベース テーブルを使用して設定されます。このオブジェクトと、このオブジェクト内のプロパティを、実行時に Required 、 Range などの DataAnnotations で装飾したいと考えています。
ICustomTypeDescriptor を実装する方法が先にあるように見えますが、実装後でも、MVC はモデル内の動的オブジェクトが好きではなく、DataAnnotationsModelMetadataProvider.CreateMetadata() メソッドを使用してそのメタデータを要求することさえありません。
この問題を回避する方法はありますか?
class Absence
{
[Required()]
public Guid EmpID { get; set; }
[Required(ErrorMessage = "Start date is manadatory")]
[DataType(DataType.Date)]
[DisplayName("Absence Start Date")]
public DateTime AbsenceStart { get; set; }
[Required(ErrorMessage = "End date is manadatory")]
[DataType(DataType.Date)]
[DisplayName("Absence End Date")]
public DateTime AbsenceEnd { get; set; }
//Populate this using a helper class which reads from DB and creates a object tree at runtime.
public dynamic AdditionRuntimeData;
}
注 : AdditionRuntimeData は、子オブジェクトを持つオブジェクトである場合もあれば、値を持つ単純なプロパティである場合もあります。
与えられた答えは、そのような深さを許しません。