| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка под ASP.NET > ASP.NET MVC 3 - ссылки в частичном представлении |
| Автор: korob2001 20.5.2015, 13:52 | ||||||
| Всем привет! Столкнулся с такой проблемой. На сайте нужно сделать меню переключения с одного языка на другой. Сделал частичное представление:
Подключаю его в мастер странице:
Меню выводится, но ссылки указывают на контроллер Master и его действие LangMenu. Вот код этого действия:
Вобщем мне нужно узнать текущий контроллер и действие, но не частичного представления и не мастер страницы, а именно той страницы где пользователь выбрал другой язык, что бы после смены языка он остался на той же странице. Заранее благодарен за любую информацию. |
| Автор: Cheloveck 20.5.2015, 17:49 | ||
Укажи в параметрах имя контроллера и экшена вместо null.
Добавлено через 2 минуты и 54 секунды https://msdn.microsoft.com/en-us/library/dd504972%28v=vs.118%29.aspx |
| Автор: korob2001 20.5.2015, 20:00 | ||||||||
| Меню расположено в мастер странице, т.е. язык можно выбрать с любой страницы. Думаю не логично будет перебрасывать пользователя на главную, либо какую-то другую страницу, если он просто решил поменять язык. Мне нужно как-то определить текущий контроллер и действие, если я указываю null, то определяется контроллер и действие частичного представления. [ChildActionOnly]. Например пользователь зашёл на главную страницу сайта:
Меню для выбора языка должны содержать такие ссылки:
Если он например зашёл на страницу:
Меню выбора языка должно содержать такие ссылки:
Думаю понятно, что жёстко вписать имя контроллера и действия не получится, так как в каждом View ссылки будут меняться. Мне нужно как-то передать по цепочке View -> MasterPage -> PartialView текущий контроллер и действие. |
| Автор: Cheloveck 20.5.2015, 20:23 | ||||
Вообще, с такими линками тяжело будет жить. На каждый чих кастомные решения придётся писать. Я бы посоветовал передавать язык в query string
Хотя, если такой вот раут как следует замапить, то получится то, что надо
Не уверен, что это заработает, негде проверить. |
| Автор: korob2001 21.5.2015, 11:18 | ||||
Ну с роутами вроде проблем нет. Не могу сгенерировать правильную ссылку. Насколько я понимаю, мне нужно каким-то образом передать из мастер страницы, имя текущего контроллера и экшена, в метод:
Т.е. вызов дочернего представления, в мастер странице, должен выглядеть как-то так:
|
| Автор: Cheloveck 21.5.2015, 11:22 | ||
|
| Автор: korob2001 21.5.2015, 11:24 | ||
Да и сигнатура метода должна измениться на примерно такую:
|
| Автор: Cheloveck 21.5.2015, 11:31 | ||
Я бы просто добавил во все экшн-методы параметр lang и таскал бы его по всем вьюхам. Тогда все экшены будут примерно такого вида
Добавлено через 1 минуту и 13 секунд Соответсвенно из меню будет зваться тот же экшн-метод, что отрендерил текущую вьюху, только с другим lang. А потом запихнёшь этот lang во все линки и формы. |
| Автор: korob2001 21.5.2015, 14:39 | ||||
да язык, будет сохраняться в куках, по сути это меню нужно будет только для того, что бы перезаписать куки. Добавил 2 строки в начале метода:
и всё заработало. Cheloveck ОГРОМНОЕ СПАСИБО ЗА ПОМОЩЬ |