サーバー側の検証は常に有効にして、クライアント側の検証よりも強力にする必要があります。モデル間の複雑な相互作用やモデルのプロパティなど、クライアント側で検証するのが難しいものもあります。jQuery
ただし、バリデータープラグイン(VS MVCプロジェクトテンプレートに付属)を使用してクライアント検証を行うことができます。サーバーに検証属性があり、以下を実装していますIClientValidatable
。
public class MyValidationAttribute : ValidationAttribute, IClientValidatable
{
public override bool IsValid(object value)
{
if (value == null) {
return true;
}
//Add validation rules
if (false) {
return false;
}
return true;
}
public override string FormatErrorMessage(string name)
{
return "Please provide valid values."
}
public IEnumerable<System.Web.Mvc.ModelClientValidationRule> GetClientValidationRules(System.Web.Mvc.ModelMetadata metadata, System.Web.Mvc.ControllerContext context)
{
return new ModelClientValidationRule[] { new ModelClientValidationRule {
ErrorMessage = "Please provide valid values.",
ValidationType = "validationrule"
} };
}
}
クライアント側では、検証ルールを追加する必要があります。
jQuery.validator.addMethod("validationrule", function (value, element, param) {
if (value == "") {
return false;
}
return true;
});
jQuery.validator.unobtrusive.adapters.addBool('validationrule');
これは、jQuery対応ハンドラーの外部に必ず追加してください。この質問に対する受け入れられた回答を参照してください。