ОБНОВЛЕНИЕ: Я получил это работает - добавил следующие маршруты:
[Маршрут ("{culture} / [действие]")]
[Маршрут ("/ [действие ] ")]
Проблема в том, что теперь, когда я нахожусь на / da /, он не добавляет / da / к ссылкам, генерируемым в AnchorTagHelper.
Попытка разрешить культуру на маршрутах. Но я также хочу, чтобы это работало без (отступление от engli sh).
domain.com / ru / about
domain.com / about
Я могу только заставить одного из них работать одновременно. Добавление / удаление {culture} заставляет его работать для каждого.
[Маршрут ("{culture} / about")]
Попытались изменить, переместить et c. все с MapRoutes
Есть идеи, как поймать оба маршрута?
У меня есть следующий код:
services.Configure<RouteOptions>(options =>
{
options.ConstraintMap.Add("culture", typeof(LanguageRouteConstraint));
});
-
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.Configure<RequestLocalizationOptions>(options =>
{
var supportedCultures = new List<CultureInfo>
{
new CultureInfo("en"),
//new CultureInfo("da-DK"),
new CultureInfo("da")
};
//options.DefaultRequestCulture = new RequestCulture(DefaultCultureName, DefaultCultureName);
options.DefaultRequestCulture = new RequestCulture(culture: "en", uiCulture: "en-US");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
options.RequestCultureProviders.Insert(0, new RouteDataRequestCultureProvider { Options = options });
});
-
app.UseMvc(routes =>
{
routes.MapRoute(
name: "LocalizedDefault",
template: "{culture:culture}/{controller=Home}/{action=Index}/{id?}");
routes.MapRoute(
name: "default",
template: "{controller}/{action}/{id?}",//"{*catchall}",
defaults: new { controller = "Home", action = "Index" });
});
-
public class LanguageRouteConstraint : IRouteConstraint
{
public bool Match(HttpContext httpContext, IRouter route, string routeKey, RouteValueDictionary values, RouteDirection routeDirection)
{
if (!values.ContainsKey("culture"))
return true;
var culture = values["culture"].ToString();
return culture == "en" || culture == "da";
}
}