2011-04-04 36 views
1

在global.asax.cs中注册路由时,如何更改url参数的顺序?如何更改MVC3中routes.MapRoute的顺序?

我注册的路线,像这样:(注:我也有注册,以及默认的MVC3路线)

routes.MapRoute(
    "SurveyWizard", 
    "survey/{id}/{action}", 
    new { id = UrlParameter.Optional, action = "AddQuestions" }); 

我的控制器:

public ActionResult AddQuestions(int id) 
{ 
    if(id < 1 || id == null) 
    //Redirect somewhere 
    var survey = _surveyService.GetSurveyById(id); 
    //other controller logic 
    return View(survey); 
} 

当我键入网址.../survey/1/AddQuestions找不到资源。当我运行路由调试器时,路由显示为有效。

这是甚至可能在MVC3?我知道在Restful WCF中,你可以像这样构造路线没问题。在我可能与{controller}/{action}/{id}一起生活的宏伟计划中,但我相信只在必要时才使用动词,在我的情况下,正确的url应该按照上面的示例进行构造。

任何想法?谢谢。

回答

3

您的路线缺少默认的控制器,如:

routes.MapRoute(
    "SurveyWizard", 
    "survey/{id}/{action}", 
    new { controller="Survey", action="AddQuestions" }); 

还有一点你应该知道的是,默认的死记硬背应该是最后一个......

+0

感谢CD。就是这样!我不小心从我的代码中省略了我的控制器。这是问题的默认路线的顺序。再次感谢。 – trevorc 2011-04-04 18:08:02