在 ASP.Net Core 中,Url.Action 用于生成 URL,其中可以包含区域设置信息以支持多语言网站。以下是如何使用 Url.Action 和区域设置的示例代码:
public void ConfigureServices(IServiceCollection services)
{
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.Configure(options =>
{
var supportedCultures = new[]
{
new CultureInfo("en-US"),
new CultureInfo("fr-FR"),
new CultureInfo("es-ES"),
new CultureInfo("zh-CN"),
};
options.DefaultRequestCulture = new RequestCulture(culture: "en-US", uiCulture: "en-US");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;
});
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
var locOptions = app.ApplicationServices.GetService>();
app.UseRequestLocalization(locOptions.Value);
}
@inject Microsoft.Extensions.Localization.IStringLocalizer _localizer
@_localizer["Hello"]
public class HomeController : Controller
{
public IActionResult Index()
{
ViewData["Title"] = "Home Page";
return View();
}
public IActionResult About()
{
ViewData["Title"] = "About Page";
return View();
}
public IActionResult ChangeCulture(string culture, string returnUrl)
{
Response.Cookies.Append(
CookieRequestCultureProvider.DefaultCookieName,
CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)),
new CookieOptions { Expires = DateTimeOffset.UtcNow.AddYears(1) }
);
return LocalRedirect(returnUrl);
}
}
@_localizer["Home"]