如何在MVC3中更改routes.MapRoute的顺序?

时间:2011-04-04 17:54:04

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-routing

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

我注册了这样的路线:(注意:我也注册了默认的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应按照上面的示例进行构建。

有什么想法吗?感谢。

1 个答案:

答案 0 :(得分:3)

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

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

你应该注意的另一点是默认的死记硬背应该是最后一个......