public override Link BuildLink(RouteParameters parameters) { Link l = this.Url.Clone() as Link; string formatString = "/{0:0000}/{1:00}/{2:00}/{3}"; Route r = this.GetRoute(); if (parameters["Slug"] != null) { formatString = (r != null) ? r.FormatString : formatString; } else if (parameters["Day"] != null) { formatString = "/{0:0000}/{1:00}/{2:00}"; } else if (parameters["Month"] != null) { formatString = "/{0:0000}/{1:00}"; } else if (parameters["Year"] != null) { formatString = "/{0:0000}"; } else { formatString = ""; } l.Extra = string.Format( formatString, parameters.Get("Year", DateTime.Now.Year), parameters.Get("Month", DateTime.Now.Month), parameters.Get("Day", DateTime.Now.Day), parameters["Slug"] ); return l; }