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"。根据你的实际需求,你可能需要进行一些其他的配置。

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

相关内容

热门资讯

六分钟技巧!雀神训练秘籍,微扑... 六分钟技巧!雀神训练秘籍,微扑克wpk安全(详细透视辅助工具教程)1、这是跨平台的雀神训练秘籍黑科技...
6分钟介绍!中至九江有辅助工具... 6分钟介绍!中至九江有辅助工具吗,红龙扑克辅助工具(详细透视辅助插件教程);中至九江有辅助工具吗简单...
三分钟黑科技!葫芦娃手游吗,p... 葫芦娃手游吗赢率提升策略‌;三分钟黑科技!葫芦娃手游吗,pokerx人工智能(详细透视辅助脚本教程)...
五分钟方法!闲来跑胡子必胜神器... 五分钟方法!闲来跑胡子必胜神器,aa扑克发牌机制(详细透视辅助插件教程);玩家必备必赢加哟《1367...
五分钟辅助挂!大齐山东麻将有没... 您好,大齐山东麻将有没有挂这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩...
6分钟教学!越乡游斗牛怎么开挂... 6分钟教学!越乡游斗牛怎么开挂,德州可能有外 挂(详细透视辅助脚本教程)1、很好的工具软件,可以解锁...
6分钟介绍!玉海楼茶苑十三输赢... 6分钟介绍!玉海楼茶苑十三输赢有没有规律,微扑克有挂(详细透视辅助插件教程);《WPK辅助透视》‌:...
六分钟教学!微信随意玩9人拼三... 《微信随意玩9人拼三张辅助器软件透明挂》是一款多人竞技的微信随意玩9人拼三张辅助器辅助透视游戏,你将...
八分钟方法!小白大作战有没有挂... 八分钟方法!小白大作战有没有挂,wepooke系统规律(详细透视辅助工具教程);(需添加指定薇757...
3分钟攻略!爱摩罗麻将有挂吗,... 3分钟攻略!爱摩罗麻将有挂吗,红龙扑克有作假(详细透视辅助插件教程)是一款可以让一直输的玩家,快速成...