컨트롤러 asp.net -core에서 최신 문화 가져오기
내 보기에 맞게 문화를 설정하고 컨트롤러에서 문화를 변경했는데 컨트롤러에서 현재 어떤 문화를 사용하고 있는지 알 수 없는 것 같습니다. 다음과 같은 것을 찾고 있습니다.
public class HomeController : Controller {
public async Task<IActionResult> Index()
{
// Something like the next line
var requestCulture = GetRequestedCulture()
return View();
}
}
정답은 Request Object에 있었습니다. 코드는 다음과 같습니다.
public async Task<IActionResult> Index() {
// Retrieves the requested culture
var rqf = Request.HttpContext.Features.Get<IRequestCultureFeature>();
// Culture contains the information of the requested culture
var culture = rqf.RequestCulture.Culture;
return View();
}
조니 에이스의 대답은 통합니다.현재 문화를 쉽게 얻을 수 있는 방법을 원한다면 .net에서 항상 수행됩니다.
CultureInfo uiCultureInfo = Thread.CurrentThread.CurrentUICulture;
CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture;
IRquestCultureFeature를 사용하려면(JohnnyAces 답변 참조) Startup.cs 에서 구성해야 합니다.마이크로소프트는 여기 https://github.com/aspnet/Entropy/blob/2fcbabef58c2c21845848c35e9d5e5f89b19adc5/samples/Localization.StarterWeb/Startup.cs 에 샘플을 제공했습니다.
ASP.Net Core 3.1:
제대로 구성되어 있으면 작동 중임을 확인할 수 있습니다(두 번째 코드 블록 참조).
CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture;
시작 클래스에서 이것을 에 추가합니다.Configure
방법:
IList<CultureInfo> supportedCultures = new List<CultureInfo>
{
new CultureInfo("en-US"), //English US
new CultureInfo("ar-SY"), //Arabic SY
};
var localizationOptions = new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("en-US"), //English US will be the default culture (for new visitors)
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
};
app.UseRequestLocalization(localizationOptions);
그러면 사용자는 다음 작업을 호출하여 문화를 변경할 수 있습니다.
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult SetCulture(string culture, string returnUrl)
{
HttpContext.Response.Cookies.Append(
CookieRequestCultureProvider.DefaultCookieName,
CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(culture)),
new CookieOptions { Path = Url.Content("~/") });
if (!string.IsNullOrEmpty(returnUrl) && Url.IsLocalUrl(returnUrl))
{
return LocalRedirect(returnUrl);
}
return RedirectToAction("Index", "Home");
}
이 코드는 aspcore 컨트롤러에서 현재 문화를 가져오는 데 사용됩니다.
public string GetCulture() => $"CurrentCulture:{CultureInfo.CurrentCulture.Name}, CurrentUICulture:{CultureInfo.CurrentUICulture.Name}";
전세계적인 부동산이 있습니다.CultureInfo.CurrentCulture
에서System.Globalization
현재 스레드에 대한 문화를 가져오는 네임스페이스입니다.이것은 지금까지 존재해 왔습니다.NET Framework 4.0과 의 현재 버전까지.NET Core 3.1.
언급URL : https://stackoverflow.com/questions/41289737/get-the-current-culture-in-a-controller-asp-net-core
'programing' 카테고리의 다른 글
Spring Data Rest를 사용할 때 @Repository를 구성 요소 검색에서 제외하는 방법 (0) | 2023.10.28 |
---|---|
MySql: MyISAM vs.이노 DB! (0) | 2023.10.28 |
PHP가 업로드된 파일을 임시 위치에 저장하는 이유와 이점은 무엇입니까? (0) | 2023.10.28 |
Oracle에서 문자열의 단어 수를 계산하려면 어떻게 해야 합니까? (0) | 2023.10.28 |
PHP/MySQL 삽입 null 값 (0) | 2023.10.28 |