Несмотря на обилие постов о маршрутизации URL, я еще не достиг просветления по этому вопросу.
У меня есть приложение MVC, которое отлично работает, но я хочу придумать и немного переписать URL, чтобы облегчить работу для моих пользователей.
Маршрут по умолчанию - это небольшое отличие от обычного:
routes.MapRoute(
"Default",
"{controller}/{action}/{query}",
new{ controller = "SomeController", action="Index", query = "" });
Я хочу перенаправить URL-адрес http://mysite.com/12345 на действие Details SomeController с запросом 12345.Я попытался это сделать:
routes.MapRoute(
"DirectToDetails",
"{query}",
new{ controller = "SomeController", action="Details" query="" });
routes.MapRoute(
"Default",
"{controller}/{action}/{query}",
new{ controller = "SomeController", action="Index", query = "" });
, но в конечном итоге это скрывает http://mysite.com/, и он переходит к SomeController / Details вместо SomeController / Index.* по совету @Jon я удалил запрос = "" в анонимном объекте:
routes.MapRoute(
"DirectToDetails",
"{query}",
new{ controller = "SomeController", action="Details" });
..., который отвечал на вопрос;теперь, когда я отправляю форму в Views / SomeView / Index (которая передает вышеупомянутый SomeController / Details), я получаю ошибку "ресурс не найден".
Вот объявление формы:
<% using (Html.BeginForm(
"Details",
"SomeController",
FormMethod.Post,
new { id = "SearchForm" })) { %>
<% Html.RenderPartial("SearchForm", Model); %>
<%= Html.ValidationMessageFor(model => model.Query) %>
<% } %>