Явно заданы значения маршрута в actionlink MVC?

У меня есть сайт MVC с отдельной областью для моего раздела admin.

Попытка настроить ActionLink с помощью RouteValues, и это проблематично.

Вот мой глобальный для конкретной страницы (обратите внимание, что я должен указать местоположение контроллера для их работы):

routes.MapRoute(
 "HomeEditStep1",
 "EditStep1",
 new { controller = "Home", action = "EditStep1", id = UrlParameter.Optional }, // Parameter defaults
 new string[] { "MyProject.Web.Controllers" }
 );

Если я создам ссылку вроде этого:

@Html.ActionLink("Edit", "EditStep1", "Home");

ссылка приведет меня к этой странице соответствующим образом. Но если я добавлю параметры, по мере необходимости:

@Html.ActionLink("Edit", "EditStep1", "Home", new { id = page.PageDetailGuid.ToString() }, new { @class = "btn lightblue" });

Затем он игнорирует Global и возвращает это, указывая на сервис по какой-либо причине: /Services/AccountService? Action = EditStep1 & controller = Home & id = 84ac76cd-fcb0-444b-adab-c0c041a81c1a

Поэтому мне нужно это /EditStep1/84ac76cd-fcb0-444b-adab-c0c041a81c1a.

У меня есть route.IgnoreRoute("{service}.svc/{* pathInfo}"); определяемых в глобальном масштабе.

Мой вопрос: нужно ли явно указывать MyProject.Web.Controllers каким-то образом в маршрутных значениях?

Благодарю! штифтик

1 ответ

в вашем определении маршрута вам нужно включить параметры, дать что-то вроде этого попробовать

routes.MapRoute(
 "HomeEditStep1",
 "EditStep1/{id}",
 new { controller = "Home", action = "EditStep1", id = UrlParameter.Optional }, // Parameter defaults
 new string[] { "MyProject.Web.Controllers" }
 );

контроллер должен быть выбран из настроек по умолчанию маршрута, но вы не даете RouteEngine какой-либо способ построить свой маршрут, поэтому он технически использует маршрут по умолчанию, который, как я предполагаю, вы удалили (поскольку мы не можем видеть весь ваш маршрутизация "таблица")

licensed under cc by-sa 3.0 with attribution.