У меня есть некоторые проблемы с маршрутизацией в моем приложении ASP.NET MVC3, именно так оно и не работает.Как исправить мою маршрутизацию MVC3
определение маршрутизации в Global.asax
routes.MapRoute(
"News", // Route name
"{lang}/{controller}/{action}/{page}/{id}", // URL with parameters
new { lang = "pl", controller = "News", action = "Index", page = 1, id = UrlParameter.Optional } // Parameter defaults
);
Так что я хочу использовать его в 2 ситуации:
/{lang}/{controller}/{action}/{page}
- чтобы перейти на страницу специфической вёрстки/{lang}/{controller}/{action}/{page}/{id}
- запомнить текущую страницу, и перейдите на страницу с конкретнымиid
.
генерировать ссылки Я использую:
@Html.RouteLink(i.ToString(), "News", new { lang = ViewBag.Lang, page = i })
где i
это номер страницы, и Ланг язык.
В контроллер я справиться с этим ведьма Действие:
public ViewResult Index(string lang, int page = 1)
ПРОБЛЕМА
@Html.RouteLink
дает мне ссылку /pl/News/Index/2
(когда '2' была нажата), но мой контроллер не обрабатывает он и страница по-прежнему «1». Поэтому, когда я дважды нажимаю одну и ту же ссылку, она дает: /pl/News/Index/2/2
, а затем страницу равна «2».
Если кто-нибудь может объяснить мне, как это работает, и что я могу сделать для его решения?
Любая помощь будет оценена по достоинству.
Вот некоторые нечестивые пути, но то, что я не видите в вашем контроллере 'id' (который является необязательным), не следует ли это' Index (string lang, int? id, int page = 1) '? :) –
Вы не читаете внимательно :) В действии индекса я не использую параметр 'id', мне это нужно только для другого Action. –
Если я правильно понимаю, вы нажимаете '/ pl/News/Index/2', он запускает правильное действие _Index_, но значение _page_ внутри этого действия равно 1 вместо 2. Нет ли других маршрутов, которые могут соответствовать этому ссылка? –