フィールドが空であるかどうかを別のフィールドに従って判断するために、カスタム ValidationAttribute "RequiredIf" を作成しました。アダプターを作成し、メソッドを追加しました。
例を次に示します: http://anthonyvscode.com/2011/07/14/mvc-3-requiredif-validator-for-multiple-values/
問題は、プロパティに必要以上のメタデータがあり、プロパティが Int32 であることです。そのため、フォームがクライアントで検証された場合、値が数値の場合は最初に評価され、値が空の場合は評価されます。
[Display(Name = "Number of cars")]
[RequiredIf("IsRent", true, ErrorMessage = "Number of cars is required")]
[Range(0, 9, ErrorMessage = "Error range")]
public virtual Int32? NumberCars
{
set;
get;
}
どうすれば修正できますか?規則の正しい順序は、if、number、および range である必要があります。