Я пытаюсь написать действительно простой прототип системы CMS с использованием ASP.Net MVC 3.
Система имеет один контроллер с двумя действиями: показать и создать.
Формат действия «Показать» предназначен для использования до 5 необязательных частей, например, domain.com/part1/part2/part3/part4/part5
Формат для шоу'action аналогичен, но должен иметь ведущую часть' create ', например domain.com/create/part1/part2/part3/part4/part5
В моем global.asax есть следующие настройки:
routes.MapRoute(
"CreatePageRoute",
"create/{part1}/{part2}/{part3}/{part4}/{part5}",
new
{
controller = "Page",
action = "Create",
part1 = UrlParameter.Optional,
part2 = UrlParameter.Optional,
part3 = UrlParameter.Optional,
part4 = UrlParameter.Optional,
part5 = UrlParameter.Optional
});
routes.MapRoute(
"Default",
"{part1}/{part2}/{part3}/{part4}/{part5}",
new
{
controller = "Page",
action = "Show",
part1 = UrlParameter.Optional,
part2 = UrlParameter.Optional,
part3 = UrlParameter.Optional,
part4 = UrlParameter.Optional,
part5 = UrlParameter.Optional
}
);
Если моему методу 'Show' не удается найти страницу, соответствующую указанному пути, он возвращает страницу 'not found', которая содержит параметры для создания новой страницы с указанным путем.Эта ссылка определяется следующим образом:
@Html.ActionLink("Yes", "Create")
[«Да» представляет ответ на вопрос «Вы хотите создать страницу для этого пути?»]
Так когдапроверяя маршрут «По умолчанию», я вижу, что мое действие «Показать» успешно вызывается для всех следующих путей: {пусто} aa / ba / b / ca / b / c / da / b / c / d / e
, что замечательно.
Однако полученная ссылка 'create', сгенерированная оператором "@ Html.ActionLink (" Yes "," Create ")", дает противоречивые результаты.Кажется, генерируется другая гиперссылка в зависимости от длины ввода.Результаты следующие:
Для пути "{empty}" ссылка предлагает "localhost {: port} /" - я надеялся на "localhost {: port} / create"
Для пути "/ a" ссылка предлагает "localhost {: port} /" - я надеялся на "localhost {: port} / create / a"
Для пути "/ a / b",ссылка предлагает "localhost {: port} / a" - я надеялся на "localhost {: port} / create / a / b"
для пути "/ a / b / c", ссылка предлагает"localhost {: port} / a / b" - я надеялся на "localhost {: port} / create / a / b / c"
для пути "/ a / b / c / d",ссылка предлагает "localhost {: port} / create / a / b / c / d" - это то, на что я надеялся
для пути "/ a / b / c / d / e",ссылка предлагает "localhost {: port} / create / a / b / c / d / e" - это то, на что я надеялся
Почему это работает только когда я поставляю "/ a / b / c/ d "или" / a / b / c / d / e "?
Я знаю, что я идиот, пожалуйста, помогите мне
Сэнди