2010-08-10 84 views
0

我有一個Visitors控制器。內部我有索引和登錄操作。這裏是行動:ASP.NET MVC 2網址格式問題

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)); 
     } 
    } 

更具體地說,我想了解SignIn()中的RedirectToAction()。我想重定向到我的索引行動,並使網址如下所示:.../2010年8月8日,但我得到:?月= 8 &天= 10 &年= 2010。我怎樣才能解決這個問題?

謝謝。

更新 這裏是我的路線(當URL硬編碼它的工作原理):

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}" } 
     ); 

回答

0

你有這些值匹配路由值路線?如果沒有匹配的路由,.NET MVC會顯示你的老同學格式參數(?),而不是一個很好的路徑中像/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

我的路線是這樣的,當硬編碼的網址是按照以下方式工作:routes.MapRoute( 「VisitorsByDate」,//路線名稱 「{controller}/{month}/{day}/{year}」,//帶參數的網址 new {controller =「visitors 「},action =」index「},//參數默認值 new {month = @」\ d {2}「,day = @」\ d {2}「,year = @」\ d {24}「} ); – Mike 2010-08-10 17:22:20

+0

糟糕。我用我的路線更新了原文。 – Mike 2010-08-10 17:23:28

+0

啊...事實證明,我的月(DateTime.Now.Day)只是一個整數,這就是爲什麼路線沒有被拾起。謝謝! – Mike 2010-08-10 17:33:11