ASP.NET MVC имеют какие-либо ограничения маршрута DateTime?

ASP.NET MVC содержат какие-либо ограничения маршрута, испеченные в код? если так, как я определяю ограничение даты и времени?

например, URL:

http://mydomain.com/{versionDate}/{controller}/{action}
http://mydomain.com/2010-01-20/search/posts

аплодисменты :)

6
задан Pure.Krome 2 March 2010 в 03:52
поделиться

3 ответа

В итоге я создал собственное ограничение маршрута. всего несколько минут.

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

12
ответ дан 8 December 2019 в 17:21
поделиться

Вы также можете установить ограничение на маршрут, что-то вроде этого. Используемое регулярное выражение не очень надежно, поэтому вам следует его уточнить.

routes.MapRoute( 
    "Version", "
    {versionDate}/{controller}/{action}", 
    new {controller="Search", action="Posts"}, 
    new {versionDate= @"\d\d\d\d-\d\d-\d\d" } 
    ); 

Информация из здесь .

2
ответ дан 8 December 2019 в 17:21
поделиться

вся структура является избыточной, поэтому можно, с большой болью, изменить поведение механизма маршрутизации по умолчанию, но я согласен с @jrista в том, что вы можете захотеть сделать его параметром контроллера. иначе mvc будет ожидать, что найдет / search / posts в папке 2010-01-20

0
ответ дан 8 December 2019 в 17:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: