编辑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 可以是具有子对象的对象,也可以只是具有值的简单属性。
给出的答案不允许这样的深度。