Как изменить порядок маршрутов. Карта в MVC3?

Как изменить порядок параметра url при регистрации маршрутов в global.asax.cs?

Я зарегистрировал маршрут следующим образом: (Примечание: у меня также зарегистрирован маршрут по умолчанию 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 должен быть структурирован в соответствии с моим примером выше.

Есть идеи? Благодарю.

1 ответ

Решение

В вашем маршруте отсутствует контроллер по умолчанию, например:

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

Еще один момент, о котором вы должны знать, это то, что по умолчанию должен быть последний...

Другие вопросы по тегам