C# 使用RouteLocalization.Mvc转换带有动作参数的路由

C# 使用RouteLocalization.Mvc转换带有动作参数的路由,c#,asp.net-mvc,asp.net-mvc-routing,asp.net-mvc-5.2,attributerouting,C#,Asp.net Mvc,Asp.net Mvc Routing,Asp.net Mvc 5.2,Attributerouting,在这个例子的基础上: [Route("MyActionWithStringParameter/{parameter}")] ActionResult MyAction(string parameter) .ForAction(x => x.MyAction(), new [] { typeof(string) }) 来自RouteLocalization.Mvc的GitHub文档。 我无法使用自己的代码 以下是我的默认路线: [Route("~/{slug:regex((bookre

在这个例子的基础上:

[Route("MyActionWithStringParameter/{parameter}")]
ActionResult MyAction(string parameter)

.ForAction(x => x.MyAction(), new [] { typeof(string) })
来自RouteLocalization.Mvc的GitHub文档。

我无法使用自己的代码

以下是我的默认路线:

[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);
但我在这一行遇到一个编译器错误:
ForAction(x=>x.UserReviews(),new[]{typeof(string)})
,x.UserReviews需要形式参数“slug”。这是有道理的


您是如何做到这一点的?

在尝试解决同一问题时偶然发现了这一点

我们刚刚通过使用字符串值而不是linq表达式,成功地实现了以下替代方案。字符串是操作方法名称,而不是带注释的路由名称

   localization.ForCulture("en")
                .ForController<TestController>()
            .ForAction("TestMethod", new[] { typeof(int) })
             .AddTranslation("TranslatedTest/TranslatedTestMethod/{id}");
localization.ForCulture(“en”)
.ForController()
.ForAction(“TestMethod”,新[]{typeof(int)})
.AddTranslation(“TranslatedTest/TranslatedTestMethod/{id}”);
~/{slug:regex((boganmeldelser)-[^-]+-(\\d+))}
   localization.ForCulture("en")
                .ForController<TestController>()
            .ForAction("TestMethod", new[] { typeof(int) })
             .AddTranslation("TranslatedTest/TranslatedTestMethod/{id}");