6

ASP.NET MVC には、コードに焼き付けられたルート制約が含まれていますか? もしそうなら、日時の制約を定義するにはどうすればよいですか?

例えば。URL:

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

乾杯 :)

4

3 に答える 3

12

結局、自分でルート制約を作成しました。ほんの数分しかかかりませんでした。

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

于 2010-03-02T04:43:05.563 に答える
2

ルートに制約を設定することもできます。使用される正規表現はあまり堅牢ではないため、改良する必要があります。

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

情報はこちらから。

于 2010-03-02T17:31:59.763 に答える
0

すべてのフレームワークはオーバーライド可能であるため、ルート エンジンのデフォルトの動作をオーバーライドすることは非常に困難ですが、@jrista に同意します。それ以外の場合は、コントローラーのパラメーターにしたい場合があります。 2010-01-20 フォルダー内で /search/posts が見つかることを期待します

于 2010-03-02T04:07:47.190 に答える