У меня мог быть SWORN У меня это работало, но где-то вдоль линии я, очевидно, сломал его. Возможно, это было во время моей миграции с ASP.NET MVC в VS2008 на ASP.NET MVC2 в VS2010.
My ActionLink:
Html.ActionLink(segment.TitleWithChapterNumber, "Index", "Read", new { bookCode = Model.Product.Id, segmentCode = segment.Index }, null)
Маршрут, по которому я ожидаю совпадения:
routes.MapRoute(
"Read",
"Read/{bookCode}/{segmentCode}/{sectionCode}/{renderStrategy}",
new { controller = "Read", action = "Index", bookCode = "", segmentCode = "", sectionCode = "", renderStrategy = "" }
);
Это дает ссылку, которая выглядит следующим образом: http://localhost/Obr/Read?bookCode=14&segmentCode=0
Но я хочу, чтобы это выглядело как http://localhost/Obr/Read/14/0
Нажатие на ссылку, которую он отображает, приводит меня к правильному контроллеру, и ответ точен. Если я вставлю ссылку, я хочу, чтобы она выглядела, она работает. Я думаю, это просто не соответствует?
Я что-то упускаю из виду? Я так долго на него смотрю, что даже не знаю, что ищу.
Для справки, вот ВСЕ мои маршруты:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"ReadImage",
"Read/Image/{bookId}/{imageName}",
new { controller = "Read", action = "Image" }
);
routes.MapRoute(
"Read",
"Read/{bookCode}/{segmentCode}/{sectionCode}/{renderStrategy}",
new { controller = "Read", action = "Index", bookCode = "", segmentCode = "", sectionCode = "", renderStrategy = "" }
);
routes.MapRoute(
"BookReport",
"BookReport/{action}/{folder}",
new { controller = "BookReport", action = "Details", folder = "" }
);
routes.MapRoute(
"Reference",
"Reference/Details/{referenceType}/{searchText}",
new { controller = "Reference", action = "Details", referenceType = "", searchText = "" }
);
routes.MapRoute(
"PaginatedAudits", // Route name
"Audit/Page/{pageNumber}", // URL with parameters
new { controller = "Audit", action = "Index" } // Parameter defaults
);
routes.MapRoute(
"PaginatedReadLog", // Route name
"ReadLog/Page/{pageNumber}", // URL with parameters
new { controller = "ReadLog", action = "Index" } // Parameter defaults
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
Подпись действия выглядит следующим образом:
[Authorize]
public ActionResult Index(string bookCode, string segmentCode, string sectionCode, string renderStrategy)
{
// code
}