|
>可能でしたら、どのように実装したかを書いていただけると、参加者の方々や
>後から検索などでここを訪れる人に有用な情報提供になると思います。
そうですね
1つ目はご教示頂いたCustomValidationを使う方法です。
[CustomValidation(typeof(TestModel2), "ValidateSampleModel")]
public class TestModel2
{
public string Flag1 { get; set; }
public string Field1 { get; set; }
public string Field2 { get; set; }
public string Field3 { get; set; }
public static ValidationResult ValidateSampleModel(TestModel2 model, ValidationContext context)
{
// ここで検査を行う。
if ("1".Equals(model.Flag1))
{
if (String.IsNullOrEmpty(model.Field1))
{
return new ValidationResult("Field1は必須です。");
}
}
else
{
if (String.IsNullOrEmpty(model.Field2))
{
return new ValidationResult("Field2は必須です。");
}
}
return ValidationResult.Success;
}
}
こちらの方法も考えました。
Modelにモデル共通のチェックは定義し、メソッド毎に違うチェックはメソッド毎に記述する。
私的にはこちらの方がシンプルのように思えました。
public ActionResult Execute1(TestModel2 model)
{
// ここで検査を行う。
if (String.IsNullOrEmpty(model.Field1))
{
ModelState.AddModelError("Field1", "Field1は必須です。");
}
if (!ModelState.IsValid)
{
return View("Index");
}
return View("Index");
}
public ActionResult Execute2(TestModel2 model)
{
// ここで検査を行う。
if (String.IsNullOrEmpty(model.Field2))
{
ModelState.AddModelError("Field2", "Field2は必須です。");
}
if (!ModelState.IsValid)
{
return View("Index");
}
return View("Index");
}
|