私は自分のページのための控えめなクライアント側の検証セットアップがあります。エラーメッセージはデータベースから返されます。私がパラメータを追加するために必要とした検証メッセージの1つでは、私はそれを特定の値でフォーマットすることができます。これは良いサーバー側で動作しますが、私は明らかにGetClientValidationRulesメソッドが最初にセットアップされたときに、これらの値のいくつかにアクセスできませんでした。このため、クライアント側のコードにエラーメッセージを作成する必要があるようですが、jQuery.validator.addMethodでtrueまたはfalseを返すだけで、これを行う方法はわかりません。MVC3とカスタムクライアント側の検証メッセージ
私は基本的にErrorMessageをGetClientValidationRulesメソッドのstring.Emptyに設定してから、自分のクリケット側のコードで検証を行い、必要なメッセージを返すことができるようにします。ここで
はpublic IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
var rule = new ModelClientValidationRule
{
ValidationType = "maximumdatecoverrequired",
ErrorMessage = string.Empty,
};
rule.ValidationParameters.Add("maxdate", DateTime.Now.AddDays(Settings.Default.MaximumDateCoverRequiredDaysInFuture).ToString("yyyy/MM/dd"));
return new[] { rule };
}
ここでは、この特定のプロパティに対して検証するために、私のクライアント側のコードがある
MVC 3にまで配線されているクライアント側のコードです。jQuery.validator.addMethod("maximumdatecoverrequired", function (value, element, params) {
var maxDate = new Date(params["maxdate"]);
var day = maxDate.getDate();
var month = maxDate.getMonth() + 1;
var year = maxDate.getFullYear();
var dateCoverRequired = new Date(value).toString('yyyy/MM/dd');
maxDate = maxDate.toString('yyyy/MM/dd');
if (value > maxDate) {
$("input#DateCoverRequired_Day").val(day);
$("select#DateCoverRequired_Month").val(month);
$("input#DateCoverRequired_Year").val(year);
return false;
}
return true;
});
クライアント側のコードでカスタムメッセージを返すにはどうすればよいですか?
あなたは何を検証しようとしていますか?あまりにも多くの詳細がありません – gdoron
gdoron - 私は達成しようとしているもので私の質問を更新しました。 – doogdeb
@doogdeb、もう一度更新してください。今回はコードを含めることを忘れないでください。 –