5

私はこの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
    }
}
4

2 に答える 2