gpt4 book ai didi

c# - 使用 RouteLocalization.Mvc 转换带有 Action 参数的路由

转载 作者:太空宇宙 更新时间:2023-11-03 15:19:16 25 4
gpt4 key购买 nike

处理这个例子:

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

.ForAction(x => x.MyAction(), new [] { typeof(string) })

来自 RouteLocalization.Mvc 的 GitHub 文档。 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”。这是有道理的。

你是如何做到这一点的?

最佳答案

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

通过使用字符串值而不是 linq 表达式,刚刚设法使以下替代方法起作用。该字符串是操作方法名称,而不是带注释的路由名称。

   localization.ForCulture("en")
.ForController<TestController>()
.ForAction("TestMethod", new[] { typeof(int) })
.AddTranslation("TranslatedTest/TranslatedTestMethod/{id}");

关于c# - 使用 RouteLocalization.Mvc 转换带有 Action 参数的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37836598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com