दिलचस्प पोस्ट
एएनटीएलआर: क्या कोई सरल उदाहरण है? मैं एक पायथन कार्यक्रम के निष्पादन का समय कैसे प्राप्त करूं? ब्राउज़र से सटीक ओएस संस्करण का पता लगाएं जावास्क्रिप्ट फाइलों की सेवा करते समय, यह आवेदन / जावास्क्रिप्ट या एप्लिकेशन / एक्स-जावास्क्रिप्ट का इस्तेमाल करना बेहतर है पायथन 3.4, यूनिकोड, विभिन्न भाषाओं और विंडोज के साथ क्या सौदा है? सुपर () जावा में नियमित अभिव्यक्ति कैसे है? (? <= #) + (? = #) 'काम करता है? एंड्रॉइड फुल स्क्रीन मोड में लेआउट को कैसे समायोजित करें, जब सॉफ्ट कीबोर्डबोर्ड दिखाई देता है कैसे decompilation को रोकने के लिए संकलित जावा वर्गों को लॉक करना? मैं एक नया लाइन (\ n) को sed का उपयोग कैसे कर सकता / सकती हूं? एनजी-दोहराने के समाप्त होने पर फ़ंक्शन कॉल करना Android ImageView स्केलिंग और समस्या का अनुवाद करना jsonp के साथ jsonp जावा में फ्लोट और डबल डेटाटाइप गतिशील रूप से फेसबुक ओपन ग्राफ़ मेटा टैग जेनरेट करना

कस्टम विशेषता के लिए ग्राहक पक्ष सत्यापन करें

मैंने एक कस्टम वैधीकरण विशेषता बनाई है:

public class FutureDateAttribute : ValidationAttribute { public override bool IsValid(object value) { if (value == null|| (DateTime)value < DateTime.Now) return false; return true; } } 

मैं jquery के साथ क्लाइंट पक्ष पर काम करने के लिए यह कैसे प्राप्त कर सकता हूं?

वेब के समाधान से एकत्रित समाधान "कस्टम विशेषता के लिए ग्राहक पक्ष सत्यापन करें"

आगे बढ़ने का तरीका बताया गया है:

कस्टम सत्यापन विशेषता को परिभाषित करके प्रारंभ करें:

 public class FutureDateAttribute : ValidationAttribute, IClientValidatable { public override bool IsValid(object value) { if (value == null || (DateTime)value < DateTime.Now) return false; return true; } public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { yield return new ModelClientValidationRule { ErrorMessage = this.ErrorMessage, ValidationType = "futuredate" }; } } 

ध्यान दें कि यह कैसे लागू करता है IClientValidatable इसके बाद हम अपना मॉडल लिखते हैं:

 public class MyViewModel { [FutureDate(ErrorMessage = "Should be in the future")] public DateTime Date { get; set; } } 

फिर एक नियंत्रक:

 public class HomeController : Controller { public ActionResult Index() { return View(new MyViewModel { // intentionally put in the past Date = DateTime.Now.AddDays(-1) }); } [HttpPost] public ActionResult Index(MyViewModel model) { return View(model); } } 

और अंत में एक दृश्य:

 @using (Html.BeginForm()) { @Html.LabelFor(x => x.Date) @Html.TextBoxFor(x => x.Date) @Html.ValidationMessageFor(x => x.Date) <input type="submit" value="OK" /> } 

जादू होने के लिए अंतिम भाग कस्टम एडैप्टर को परिभाषित करना है:

 <script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script> <script type="text/javascript"> // we add a custom jquery validation method jQuery.validator.addMethod('greaterThan', function (value, element, params) { if (!/Invalid|NaN/.test(new Date(value))) { return new Date(value) > new Date($(params).val()); } return isNaN(value) && isNaN($(params).val()) || (parseFloat(value) > parseFloat($(params).val())); }, ''); // and an unobtrusive adapter jQuery.validator.unobtrusive.adapters.add('futuredate', { }, function (options) { options.rules['greaterThan'] = true; options.messages['greaterThan'] = options.message; }); </script> 

आपके सवाल से थोड़ा समय लगा, लेकिन अगर आपको अभी भी मेटाडेटा पसंद है, और आप अभी भी सरल विकल्पों के लिए खुले हैं, तो आप निम्नलिखित टिप्पणियों का उपयोग कर अपनी समस्या का समाधान कर सकते हैं:

 [Required] [AssertThat("Date > Now()")] public DateTime? Date { get; set; } 

यह बॉक्स के बाहर – सर्वर और क्लाइंट दोनों के लिए काम करता है। अधिक जानकारी के लिए अभिव्यक्तिविज्ञान पुस्तकालय पर एक नज़र डालें।