MVC プロジェクトでは、(たとえば) 10 個のプロパティを持つクラスがあり、すべて必須です。ユーザーが選択した場合、一度は 3 つのプロパティのみを検証し、それ以外の場合はすべてのプロパティを検証する必要があります。
それらはクラス患者の私のプロパティです:
[Required(ErrorMessage = "Last Name is required")]
[StringLength(50)]
public string responsibleLastName;
[Required(ErrorMessage = "First Name is required")]
[StringLength(50)]
public string responsibleFirstName;
[Required(ErrorMessage = "Address is required")]
[StringLength(50)]
public string responsibleAddressLine1;
[Required(ErrorMessage = "City is required")]
[StringLength(50)]
public string responsibleCityName;
[Required(ErrorMessage = "State is required")]
[StringLength(2)]
public string responsibleStateCode;
[Required(ErrorMessage = "Zip Code is required")]
[StringLength(10)]
public string responsiblePostalZoneOrZIPCode;
[Required(ErrorMessage = "Birth Date is required")]
public DateTime responsibleBirthDate;
[Required(ErrorMessage = "Gender is required")]
public string responsibleGenderCode;
[Required(ErrorMessage = "Home Phone is required")]
[StringLength(10)]
public string responsibleHomePhone;
保存する前に、コントローラーで検証を行っています。
if (firstCondition) //partial validation
{ if (!ModelState.IsValidField("responsibleLastName"))
{
ModelState.AddModelError("responsibleLastName", "Last Name is required");
isOK = false;
}
//... and 2 more validation
//finally I check the isOK value
if (!isOK)
return PartialView("firstCondition", model);
else
// do something
}
else { //validate all the properties from the model
if (!ModelState.IsValid)
return PartialView("secondCondition", model);
else
//do something
}
最初のケースでは、メッセージはこれら 3 つのプロパティ + クラスのすべてのエラー メッセージに対して複製されます。
ModelState.IsValidField は Model.IsValid の呼び出しを行っており、各プロパティの ModelValidationResult のリストを取得しています。その後、必要なフィールドの結果を確認しますか? メッセージが重複するのはなぜですか?
モデルの検証機能を使いたいので、値を手動で検証したくない
//NOT
if (!model.responsibleLastName == "")
{
ModelState.AddModelError("responsibleLastName", "Last Name is required");
isOK = false;
}
前もって感謝します。