0

selectMVC3フォームに複数のリストボックスがあります。ユーザーは、このリストボックスにカスタム要素を追加optionしたり、このリストボックスからカスタム要素を削除したりできます。ただし、リストボックス内の2つのオプションに同じ値が含まれていないことを検証したいと思います。

IClientValidatableを実装するカスタムValidationAttributeを作成しました。サーバーとクライアントの両方の検証が機能しています。ただし、ErrorMessageは次のようになります。

ErrorMessage = "{0} has more than 1 '{1}' option.")

残念ながら、部分的にフォーマットされたメッセージをクライアント検証メッセージに渡すことしかできません。そのようにしています。

var rule = new ModelClientValidationRule
{
    ErrorMessage = FormatErrorMessage(metadata.GetDisplayName()),
    ValidationType = "noduplicatestringvalues",
};

検証は、検証が実行されるまでどのオプション値が複製されているかを認識しないため、検証機能中にメッセージのフォーマットを完了したいと思います。

ただし、エラーメッセージは機能中にしか設定できないよう$.validator.unobtrusive.adapters.add()です。

data-val-noduplicatestringvalues検証中に要素に属性を設定しようとしましselectたが、エラーメッセージは次のように表示されます。

FieldNameには複数の'{1}'アイテムがあります。

検証機能中にエラーメッセージを変更する方法はありますか?

4

1 に答える 1

2

メッセージをカスタマイズできます。

remote検証方法jquery.validate.jsを見ると、リモート検証関数から返されたメッセージを使用して、エラーメッセージをカスタマイズする例が表示されます。

于 2011-10-05T21:03:42.723 に答える