How to Validate Forms with ASP.NET MVC 2 Data Annotations: Listing 4.

JavaScript to Perform WithinDays Validation in the Client Browser

    <script type="text/javascript">
      Sys.Mvc.ValidatorRegistry.validators["withindays"] = 
        function (rule) {
        // convert prior and subsequent parameters to 
        // milliseconds(multiply by 86400000).
        var prior = rule.ValidationParameters["prior"] * 86400000;
        var subsequent = (rule.ValidationParameters["subsequent"] 
          + 1) * 86400000;
        // Today's date minus the time component 
        var today = Date.parse((new Date()).toDateString()); 
        var priorDateValue = today + prior; // prior is 
                                                          // already negative
        var subsequentDateValue = today + subsequent;
        // we return the function that 
        // actually does the validation
        return function (value, context) {
        //expected date format: mm/dd/yy or mm/dd/yyyy
        var mdy = value.split("/");
        var mm = parseInt(mdy[0]) - 1; // Note month is zero-based
        var dd = parseInt(mdy[1]);
        var yy = parseInt(mdy[2]);
        yy = yy < 30 ? yy + 2000 : yy; // need to make Y2K behavior 
                                                  // conform with .NET
        // Basic validation for day & month because 
        // JS Date function allows higher/lower values
        // Yes, I know Feb has 29 days only during 
        // leap year ... like I said, basic validation.
        if (mm < 12 && dd <= 
          [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][mm]) {
        var inDate = new Date(yy, mm, dd);
        var inDatevalue = inDate.valueOf();
        if (inDatevalue >= 
          priorDateValue && inDatevalue < subsequentDateValue)
        return true;
        return rule.ErrorMessage;
comments powered by Disqus


  • C# Slides in Usage Ranking of Programming Languages

    "The fact that C# lost three places in the ranking of language communities during the last three years is mostly explained by its slower growth compared to C/C++ and PHP."

  • Telerik UI for Blazor Updated

    Progress announced an update to its Telerik UI for Blazor components, targeting Microsoft's open source Blazor framework that lets C# coders create web apps without having to rely upon JavaScript.

  • Infragistics Unveils UI Components for Blazor

    Infragistics, specializing in third-party UI/UX controls and tools, unveiled a new offering targeting Blazor, Microsoft's red-hot open source framework that allows for C#-based web development instead of traditional mainstay JavaScript.

  • AWS Open Sources Tool for Porting .NET Framework Apps to .NET Core

    Leading cloud computing platform Amazon Web Services open sourced the it announced in July for helping users port old .NET Framework applications to the new .NET Core framework.

  • Uno Platform Ports Windows Calculator to Linux

    Uno Platform has ported the famed Windows Calculator, open sourced last year, to Linux as part of a continuing "proof point" effort to demonstrate the reach of what it describes as the sole UI offering available to target Windows, WebAssembly, iOS, macOS, Android and Linux with single-codebase applications coded in C# and XAML.

Upcoming Events