отработку этого примера:Транслирующие маршруты с параметром действия с использованием RouteLocalization.Mvc
[Route("MyActionWithStringParameter/{parameter}")]
ActionResult MyAction(string parameter)
.ForAction(x => x.MyAction(), new [] { typeof(string) })
Из документации GitHub для RouteLocalization.Mvc. https://github.com/Dresel/RouteLocalization/blob/master/Documentation/SelectingAndTranslatingRoutes.md
Я не могу заставить свой собственный код работать.
Вот мой маршрут по умолчанию:
[Route("~/{slug:regex((bookreviews)-[^-]+-(\\d+))}")]
Вот как я инициализировать переводы в RouteConfig:
var culture = Thread.CurrentThread.CurrentUICulture;
var specificCulture = CultureInfo.CreateSpecificCulture(culture.Name);
var region = new RegionInfo(specificCulture.Name);
const string en = "en";
ISet<string> acceptedCultures = new HashSet<string>() { en, "se", "dk" };
routes.Localization(configuration =>
{
configuration.DefaultCulture = en;
configuration.AcceptedCultures = acceptedCultures;
configuration.AttributeRouteProcessing = AttributeRouteProcessing.AddAsNeutralAndDefaultCultureRoute;
configuration.AddCultureAsRoutePrefix = false;
configuration.AddTranslationToSimiliarUrls = false;
}).TranslateInitialAttributeRoutes().Translate(localization =>
{
localization.AddRoutesTranslation(region.TwoLetterISORegionName.ToLower());
});
CultureSensitiveHttpModule.GetCultureFromHttpContextDelegate = Localization.DetectCultureFromBrowserUserLanguages(acceptedCultures, en);
А вот перевод на вопрос:
localization.ForCulture(culture)
.ForController<UserController>()
.ForAction(x => x.UserReviews(), new[] { typeof(string) })
.AddTranslation(ConfigurationHelper.AppSetting<string>("Route.User.UserReviews"));
С моим значением из web.config:
~/{slug:regex((boganmeldelser)-[^-]+-(\\d+))}
Но я получаю ошибку компилятора в этой строке: ForAction(x => x.UserReviews(), new[] { typeof(string) })
, что для x.UserReviews требуется формальный параметр 'slug'. Это имеет смысл.
Как вы это делаете?