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

Server-Side Custom Validator for WithinDays()

<DisplayName("Anniversary Date")>
        <Required()>
        '<Range(GetType(DateTime), "01/01/2000", "12/31/2010")>
 <WithinDays(PriorDays:=-30, SubsequentDays:=30, ErrorMessage:=
   "Date Must be Within 30 Days")>
        <DisplayFormat(DataFormatString:="{0:d}", 
          ApplyFormatInEditMode:=True)>
        Public Property AnniversaryDate As Object
    End Class
	
    Public Class WithinDaysAttribute
        Inherits ValidationAttribute

        Public Property PriorDays As Integer
        Public Property SubsequentDays As Integer
        Private ParmDate As DateTime

        Public Overrides Function IsValid(ByVal value As Object) 
          As Boolean
        If IsNothing(value) Then _
        Return False
        If (DateTime.TryParse(value.ToString(), ParmDate) = False) 
        Then Return False

            Dim WithinRange As Boolean =
                (ParmDate >= DateTime.Now.AddDays(PriorDays)) And
                (ParmDate <= DateTime.Now.AddDays(SubsequentDays))

            Return WithinRange
        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