ASP.NET MVC содержат какие-либо ограничения маршрута, испеченные в код? если так, как я определяю ограничение даты и времени?
например, URL:
http://mydomain.com/{versionDate}/{controller}/{action}
http://mydomain.com/2010-01-20/search/posts
аплодисменты :)
В итоге я создал собственное ограничение маршрута. всего несколько минут.
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
}
}
просто: P
Вы также можете установить ограничение на маршрут, что-то вроде этого. Используемое регулярное выражение не очень надежно, поэтому вам следует его уточнить.
routes.MapRoute(
"Version", "
{versionDate}/{controller}/{action}",
new {controller="Search", action="Posts"},
new {versionDate= @"\d\d\d\d-\d\d-\d\d" }
);
Информация из здесь .
вся структура является избыточной, поэтому можно, с большой болью, изменить поведение механизма маршрутизации по умолчанию, но я согласен с @jrista в том, что вы можете захотеть сделать его параметром контроллера. иначе mvc будет ожидать, что найдет / search / posts в папке 2010-01-20