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

WithinDaysValidator Class to Define the Custom Client Validation Rule

Public Class WithinDaysValidator
    Inherits DataAnnotationsModelValidator(Of WithinDaysAttribute)
    Private _priorDays As Integer
    Private _subsequentDays As Integer
    Private _message As String

    Public Sub New(ByVal metadata As ModelMetadata,
                   ByVal context As ControllerContext,
                   ByVal attribute As WithinDaysAttribute)

        MyBase.New(metadata, context, attribute)

        _message = attribute.ErrorMessage
        _priorDays = attribute.PriorDays
        _subsequentDays = attribute.SubsequentDays
    End Sub

    Public Overrides Function GetClientValidationRules() _
      As IEnumerable(Of System.Web.Mvc.ModelClientValidationRule)

        Dim Rule As New ModelClientValidationRule _
        With {.ErrorMessage = _message, .ValidationType = 
          "withindays"}

        Rule.ValidationParameters.Add("prior", _priorDays)
        Rule.ValidationParameters.Add("subsequent", _subsequentDays)

        Dim ModelClientValidationRule() = {Rule}
        Return ModelClientValidationRule
    End Function
End Class
comments powered by Disqus

Featured

  • VS Code 1.125 Adds Copilot Spend Meter After Billing Shock

    VS Code 1.125 adds in-editor visibility into additional Copilot budget usage as GitHub's AI-credit billing model continues to draw developer scrutiny.

  • TypeScript 7.0 RC Moves Microsoft's Go Rewrite Into the Mainline Compiler

    Microsoft's Go-based TypeScript rewrite has reached Release Candidate status, moving from a separate native-preview package into the regular TypeScript npm package while leaving some ecosystem-facing API work for TypeScript 7.1 or later.

  • Microsoft Highlights Visual Studio Live! Event Lineup and Longtime Developer Community Role

    A Microsoft MVP Blog post on Visual Studio Live!'s longevity arrives as the 2026 conference series continues with upcoming stops at Microsoft HQ, San Diego and Orlando.

  • Using Local AI to Cut Copilot Usage-Based Billing Shock

    After being gobsmacked by the new billing plan using almost all my monthly credits in one or two days, I tried pushing some Copilot-style coding work onto local models in VS Code. What I found was less "free AI" and more "pick your pain": cloud charges on one side, heavy local resource use and long waits on the other.

Subscribe on YouTube