我有这个 ViewModel(简化):
public class ResponseViewModel {
public QuestionViewModel Question { get; set; }
public string Answer { get; set; }
}
public class QuestionViewModel {
public string Text { get; set; }
public string Description { get; set; }
public bool IsRequired { get; set; }
}
QuestionViewModel 是从我的 DAL 实体 Question 映射的,这是一个直接的映射:
public class Question {
public int Id { get; set; }
public string Text { get; set; }
public string Description { get; set; }
public bool IsRequired { get; set; }
}
如果为真,我希望能够使Answer
必需。Question.IsRequired
但是在回发之后 Only 属性Answer
被填充(当然)。
去这里的最佳方式是什么?我希望能够创建一个验证属性,但不知道如何实现。
更新:
我试图通过使用 ModelBinding 使其工作,但直到现在还没有成功。我做了什么:
public class EntityModelBinder : DefaultModelBinder
protected override object CreateModel(ControllerContext controllerContext, ModelBindingContext bindingContext, Type modelType)
{
// IF I DO IT HERE I AM TOO EARLY
}
protected override void OnModelUpdated(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
base.OnModelUpdated(controllerContext, bindingContext);
// IF I DO IT HERE I AM TOO LATE. VALIDATION ALREADY TOOK PLACE
}
}