0

编辑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 可以是具有子对象的对象,也可以只是具有值的简单属性。

给出的答案不允许这样的深度。

4

1 回答 1

0
ModelState.AddModelError("Fields[x].SomeProperty", "The Error Message you want to show.);

检查以下链接:

验证 MVC 中的动态字段

于 2013-10-24T13:23:16.620 回答