2009-10-27 4 views
0

J'ai une route commeComment contrôler la génération de route ASP.NET MVC?

 routes.MapRoute(
     "Reports",            // Route name. 
     "reports/{controller}/{action}/{id}/{start}/{end}",  // URL with parameters. 
     new { controller = "Home", action = "Index", id = "", start="", end="" } // Parameter defaults. 
    ); 

start et end sont DateTime? Lorsque j'écris un Html.ActionLink, il génère la route en utilisant la méthode DateTime.ToString. Ces dates ont des barres obliques qui perturbent la route. Je voudrais en quelque sorte contrôler la génération d'itinéraire pour générer des chaînes de date ISO 8601.

Idéalement je ne veux pas avoir à changer mes Actions pour prendre des chaînes et convertir dans mon code, je voudrais signaler au générateur de route d'appeler la surcharge ToString appropriée de mon choix.

Répondre

4

Dans votre Html.ActionLink, quand vous déclarer les valeurs de début et de fin, pourquoi ne pas faire quelque chose comme:

new{start = String.Format("{0:YYYY-MM-dd}", SomeDate)} 

ou si vous avez besoin de temps là aussi:

new{start = String.Format("{0:s}", SomeDate)} 

Un peu de travail, mais il va garantir qu'il est correctement formaté.

+0

Vous voulez dire «aaaa-MM-jj» (minuscules pour l'année)? – wqw