複数の必須フィールドの簡単な検証のために、ここで説明するカスタムバリデーターを使用しています
目的の動作が得られ、検証の概要メッセージが正しく表示されますが、現在欠落しているのは、組み込みのバリデーターが使用されている場合に追加される、無効な入力要素の検証エラーcssクラスの欠如です。
これは正しい動作です。
<input class="input-validation-error" name="ModelName" ... />
そして、これは私が言及されたカスタムバリデーターを使用するときに得られるものです:
<input name="ModelName" ... />
サーバー側の検証について言及していることに注意してください。
アップデート
これは私のモデルです:
public class Register
{
[MultiFieldRequired(new[] { "Name", "UserName" }, ErrorMessage = "Please provide all required information")]
[Display(Name = "Name")]
public string Name { get; set; }
[MultiFieldRequired(new[] { "Name", "UserName" }, ErrorMessage = "Please provide all required information")]
[Display(Name = "User name")]
public string UserName { get; set; }
}
そして、これはレンダリングされた出力です:
<input class="text-box single-line" data-val="true" data-val-multifield="Please provide all required information" id="Name" name="Name" type="text" value="" />
<input class="text-box single-line" data-val="true" data-val-multifield="Please provide all required information" id="UserName" name="UserName" type="text" value="" />
私が抱えていた問題は、モデルクラス全体をMultiFieldRequired属性で装飾した場合にのみ発生することに気づきました。
[MultiFieldRequired(new[] { "Name", "UserName" }, ErrorMessage = "Please provide all required information")]
public class Register
{
...
この場合、無効なフィールドでcssクラスが変更されていませんが、他のシナリオでは、モデル内のすべてのフィールドに注釈を付けると、同じエラーメッセージに無効なフィールドの数を掛けたものが表示されます。
したがって、要約すると、無効なフィールドの数に関係なく1つのエラーメッセージが必要です。また、各無効なフィールドに.input-validation-errorクラスのマークを付ける必要があります。