В проекте ASP MVC 3 я хочу включить переключение языков.ASP-коммутатор ASP MVC 3 с ActionLink
Маршрутизация определяется следующим образом:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"DefaultWithLanguage", // Route name
"{language}/{controller}/{id}/{slug}", // URL with parameters
new { language = "en", controller = "Front", action = "Details", id = UrlParameter.Optional, slug = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
Попытка переключения языков (в _Layout.cshtml) работает следующим образом:
<li>@Html.ActionLink("Spanish", ViewContext.RouteData.Values["action"].ToString(), ViewContext.RouteData.Values["controller"].ToString(), new { language = "es" })</li>
Вместо того, чтобы получить URL, как следующее (после того, как выбран испанский)
.../es/ControllerName/ActionName
я «получаю это:
.../ControllerName/ActionName?Length=11
Если я установить ActionLink к следующему (обратите внимание на последний параметр NULL):
<li>@Html.ActionLink("Spanish", ViewContext.RouteData.Values["action"].ToString(), ViewContext.RouteData.Values["controller"].ToString(), new { language = "es" }, null)</li>
я получаю это:
.../ControllerName/ActionName?language=es
Что мне не хватает? Спасибо заранее!
Вы также оставили маршрут по умолчанию? Пожалуйста, покажите все свои регистрационные данные о маршруте. –
@Darin Посмотрите на (измененную) формулировку. Я включил весь код в RegisterRoutes. –