0

以下は、どういうわけかクライアント側の検証が機能していないコードです...私はこのフォーラムでいくつかの質問を検索し、これを書きました。

これがカスタム検証属性「startDateAttribute」です

    [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
    public class StartDateAttribute : ValidationAttribute, IClientValidatable
    {
        public StartDateAttribute ()
        {
        }

        public override bool IsValid(object value)
        {   
            var date = (DateTime)value;
            if (date.Date >= DateTime.Now.Date)
            {
                return true;
            }
            return false;
        }

        public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
        {
            yield return new ModelClientValidationRule
            {
                ErrorMessage = this.ErrorMessage,
                ValidationType = "DateRange"
            };
        }
    }

    [CurrentDateAttribute(ErrorMessage = "select the correct date")]    
    public DateTime? StartDate { get; set; }

これが追加されたJQueryコードです

      jQuery.validator.addMethod('DateRange', function (value, element, params) {
     var d = new Date();         
     var currentDate = (d.getMonth()+1)  + "/"+d.getDate()+ "/" + d.getFullYear() ;
    return value >= currentDate;
});

// and an unobtrusive adapter
jQuery.validator.unobtrusive.adapters.add('DateRange', { }, function (options) {
    options.rules['DateRange'] = true;
    options.messages['DateRange'] = options.message;
});
4

1 に答える 1

0

クライアント側の検証の要件の1つは、ValidationTypeとアダプター名が一致し、小文字である必要があることです。

ValidationTypeとアダプタ名を「daterange」に変更してチェックします

于 2012-04-25T07:53:38.577 に答える