ASP Core - Url.Action不尊重本地化路由
创始人
2024-11-11 15:30:53
0

在ASP.NET Core中,如果你使用本地化路由,Url.Action方法可能不会正确地生成本地化的URL。这是因为Url.Action方法使用了当前请求的语言和区域设置,而不是使用指定的本地化路由值。为了解决这个问题,你可以使用以下方法之一:

方法一:使用IUrlHelper的方法来生成URL

你可以使用IUrlHelper的方法来生成URL。这些方法接受一个名为routeValues的参数,你可以在其中指定本地化路由值。下面是一个示例:

public IActionResult Index()
{
    // 通过routeValues参数指定本地化路由值
    var url = Url.RouteUrl("default", new { controller = "Home", action = "Index" }, Request.HttpContext.RequestCulture);
    
    return View();
}

在这个示例中,我们使用了Url.RouteUrl方法来生成URL,而不是使用Url.Action方法。我们将Request.HttpContext.RequestCulture作为routeValues参数传递给Url.RouteUrl方法,这样就可以正确地生成本地化的URL。

方法二:使用IHtmlLocalizer和IHtmlLocalizerFactory

另一种方法是使用IHtmlLocalizer和IHtmlLocalizerFactory来生成本地化的URL。这些接口提供了本地化字符串和本地化路由值的支持。下面是一个示例:

private readonly IHtmlLocalizer _localizer;
private readonly IHtmlLocalizerFactory _localizerFactory;

public HomeController(IHtmlLocalizer localizer, IHtmlLocalizerFactory localizerFactory)
{
    _localizer = localizer;
    _localizerFactory = localizerFactory;
}

public IActionResult Index()
{
    // 使用IHtmlLocalizerFactory创建本地化路由值
    var localizer = _localizerFactory.Create(typeof(HomeController));
    var routeValues = new { controller = "Home", action = "Index" };
    var url = Url.Action("Index", "Home", routeValues, Request.HttpContext.RequestCulture);

    return View();
}

在这个示例中,我们通过注入IHtmlLocalizer和IHtmlLocalizerFactory来获取本地化路由值。然后,我们使用Url.Action方法并传递Request.HttpContext.RequestCulture作为routeValues参数,来生成本地化的URL。

总结: 无论你选择哪种方法,都需要确保你的应用程序正确地配置了本地化路由。你可以在Startup.cs文件的ConfigureServices方法中配置本地化路由,例如:

public void ConfigureServices(IServiceCollection services)
{
    services.AddLocalization(options => options.ResourcesPath = "Resources");
    
    services.AddMvc()
            .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix)
            .AddDataAnnotationsLocalization();
}

在这个示例中,我们使用了AddLocalization和AddViewLocalization方法来配置本地化路由。我们还指定了资源文件的路径为"Resources"。根据你的实际需求,你可能需要进行一些其他的配置。

希望这些解决方法对你有帮助!

相关内容

热门资讯

黑科技ai(wpk ai辅助)... 黑科技ai(wpk ai辅助)wpk透明挂(wpK)好像存在有挂(揭秘有挂)-哔哩哔哩1、首先打开w...
黑科技新版(wpk ai辅助)... 黑科技新版(wpk ai辅助)wpk辅助(WpK)原来真的有挂(有挂神器)-哔哩哔哩1、起透看视 w...
黑科技辅助(wpk ai辅助)... 黑科技辅助(wpk ai辅助)wpk微扑克模拟器(wpK)原来是真的有挂(详细教程)-哔哩哔哩;1、...
黑科技中牌率(wpk ai辅助... 黑科技中牌率(wpk ai辅助)wpk ai机器人(wPk)真是有挂(有挂工具)-哔哩哔哩1、起透看...
黑科技苹果版(wpk ai辅助... 黑科技苹果版(wpk ai辅助)wpk有透视辅助(wPk)一贯存在有挂(有挂透视)-哔哩哔哩一、wp...
黑科技能赢(wpk最新黑科技)... 黑科技能赢(wpk最新黑科技)Wpk辅助器(wPK)一直是有挂(证实有挂)-哔哩哔哩1、全新机制【w...
黑科技教学(wpk ai辅助)... 黑科技教学(wpk ai辅助)wpk透视辅助挂(wpK)果然是有挂(有挂存在)-哔哩哔哩1、超多福利...
黑科技挂(wpk ai辅助)w... 黑科技挂(wpk ai辅助)wpk微扑克免费辅助(wpK)一直是有挂(有挂技巧)-哔哩哔哩;1、金币...
黑科技计算(wpk ai辅助)... 黑科技计算(wpk ai辅助)wpk的发牌机制(wpK)确实存在有挂(有挂方略)-哔哩哔哩1、上手简...
黑科技辅助(wpk最新黑科技)... 黑科技辅助(wpk最新黑科技)wpk胜利跟号有关吗(Wpk)好像是真的有挂(真的有挂)-哔哩哔哩1、...