does ASP.NET MVC contain any route contraints baked into the code? if so, how do i define a date-time constraint?
eg. url:
http://mydomain.com/{versionDate}/{controller}/{action}
http://mydomain.com/2010-01-20/search/posts
cheers :)
I ended up making my own route constraint. only took a few mins.
using System;
using System.Web;
using System.Web.Routing;
namespace Whatever.Your.Funky.Cold.Medina.Namespace.Is
{
    public class DateTimeRouteConstraint : IRouteConstraint
    {
        #region IRouteConstraint Members
        public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values,
                          RouteDirection routeDirection)
        {
            DateTime dateTime;
            return DateTime.TryParse(values[parameterName] as string, out dateTime);
        }
        #endregion
    }
}
simple :P
You could also set up a constraint on the route, something like so. The regular expression used is not very robust, so you should refine it.
routes.MapRoute( 
    "Version", "
    {versionDate}/{controller}/{action}", 
    new {controller="Search", action="Posts"}, 
    new {versionDate= @"\d\d\d\d-\d\d-\d\d" } 
    ); 
Information from here.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With