ASP.Net MVC: так что подождите ... Параметр маршрута по умолчанию должен быть назван id? - PullRequest
0 голосов
/ 17 июня 2009

Кто-нибудь еще имел эту проблему? Я должен делать что-то не так.

Итак, я настраиваю маршрут для таких ошибок:

routes.MapRoute
(
 "SharedError",
 "Shared/Error/{error}",
 new { error = "" }
);

И звонит как:

return parentController.RedirectToRoute("SharedError", new RouteValueDictionary(new { error = errorMessage.ToString() }));

А на контроллере:

public ActionResult Error(String error)

Просто верно? Хорошо, когда это действительно выполняется, ошибка равна нулю, несмотря на то, что URL выглядит так:

/ Shared / Error / ThisIsTheError

Но параметр error в методе Error равен нулю. (И да, я пробовал другие слова)

Теперь, если я заменю все это словом "id", все будет работать.

Global.asax.cs

routes.MapRoute
(
 "SharedError",
 "Shared/Error/{id}",
 new { id = "" }
);

Перенаправление:

return parentController.RedirectToRoute("SharedError", new RouteValueDictionary(new { id = errorMessage.ToString() }));

Общий контроллер:

public ActionResult Error(String id)

Является ли id обязательным словом для всех маршрутов, если маршрут по умолчанию принимает значение?

1 Ответ

5 голосов
/ 17 июня 2009

Вам всегда нужно указывать контроллер и параметры действия:

routes.MapRoute
(
 "SharedError",
 "Shared/Error/{error}",
 new { controller = "Shared", action="Error", error = "" }
);

Я предполагаю, что причина использования идентификатора работает для вас, потому что у вас все еще зарегистрирован маршрут по умолчанию, который имеет идентификатор в качестве параметра и значения по умолчанию для контроллера и действия.

Обратите внимание: если у вас все еще есть маршрут по умолчанию, убедитесь, что вы добавили свой маршрут перед , иначе он сначала будет совпадать с другим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...