2010-08-10 5 views
0

J'ai un contrôleur de visiteurs. A l'intérieur j'ai des actions Index et SignIn. Voici les actions:ASP.NET MVC 2 Format Url Numéro

public ActionResult Index(int month, 
           int day, 
           int year){ 

     var visitors = visitorRepoistory.FindVisitorsByDate(month, day, year).ToList(); 

     return View("Index", visitors); 
    } 

    [HttpPost] 
    public ActionResult SignIn(Visitor visitor) { 
     if (ModelState.IsValid) { 
      visitorRepoistory.Add(visitor); 
      visitorRepoistory.Save(); 
      return RedirectToAction("/", new { month = DateTime.Now.Month, day = DateTime.Now.Day, year = DateTime.Now.Year }); 
     } else { 
      return View(new VisitorFormViewModel(visitor)); 
     } 
    } 

Plus précisément, je suis en train de comprendre le RedirectToAction() dans SignIn(). Je voudrais l'avoir rediriger vers mon action d'index et avoir l'URL ressembler à: .../08/10/2010, mais à la place j'obtiens:? Month = 8 & day = 10 & year = 2010. Comment puis-je réparer cela?

Merci.

Mise à jour Voici mon itinéraire (Lorsque l'URL hardcoded cela fonctionne):

routes.MapRoute(
      "VisitorsByDate", // Route name 
      "{controller}/{month}/{day}/{year}", // URL with parameters 
      new { controller = "visitors", action = "index"}, // Parameter defaults 
      new { month = @"\d{2}", day = @"\d{2}", year = @"\d{4}" } 
     ); 

Répondre

0

Avez-vous un itinéraire correspondant à ces valeurs aux valeurs de la route? Si vous ne disposez pas d'un itinéraire correspondant, .NET MVC affichera vos paramètres dans l'ancienne école (??) le format et pas dans un joli chemin comme /home/blog/8/10/2010

routes.MapRoute("Visitor_Routes", 
       "{controller}/{action}/{month}/{day}/{year}", 
       new { 
         controller = "Blog", 
         action = "archive", 
         year = Urlparameter.Optional, 
         month = Urlparameter.Optional, 
         day = Urlparameter.Optional 
        }); 
+0

Mon parcours ressemble à ceci et quand hardcoding l'url, il fonctionne comme il se doit: routes.MapRoute ( "VisitorsByDate", // Nom de la route "{controller}/{month}/{day}/{year}", // URL avec les paramètres new {controller = "visitors ", action =" index "}, // Paramètre par défaut nouveau {month = @" \ d {2} ", jour = @" \ d {2} ", année = @" \ d {24} "} ) – Mike

+0

Oups. J'ai mis à jour le message original avec mon itinéraire. – Mike

+0

Ah ... il s'avère que mon mois (DateTime.Now.Day) est seulement un seul entier et c'est pourquoi la route n'a pas été ramassée. Merci! – Mike