ASP.NET MVC 2 Url格式问题

时间:2010-08-10 16:25:33

标签: asp.net-mvc asp.net-mvc-2

我有一个访客控制器。在里面我有Index和SignIn动作。以下是行动:

  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()。我想让它重定向到我的索引操作并让网址看起来像:... / 08/10/2010,但我得到:?month = 8& day = 10& year = 2010。我该如何解决这个问题?

感谢。

更新 这是我的路线(当它在网址中硬编码时):

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

1 个答案:

答案 0 :(得分: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
                    });