【问题标题】:How do I change the order of routes.MapRoute in MVC3?如何更改 MVC3 中 routes.MapRoute 的顺序?
【发布时间】:2011-04-04 17:54:04
【问题描述】:

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

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

这在 MVC3 中是否可行?我知道在 Restful WCF 中,您可以像这样构造路由没问题。总体而言,我可能会使用 {controller}/{action}/{id},但我相信只有在必要时才使用动词,在我的情况下,应该按照我上面的示例构建正确的 url。

有什么想法吗?谢谢。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢 CD。就是这样!我不小心从我的代码中省略了我的控制器。问题在于默认路由的顺序。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2022-01-23
    • 2015-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-09
    • 2011-04-15
    • 2021-01-26
    相关资源
    最近更新 更多