私はこの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; }
}
trueのAnswer
場合はRequiredにできるようにしたいです。Question.IsRequired
ただし、ポストバック後のみプロパティ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
}
}