Mvc View和HttpPost具有不同的文化价值观

时间:2019-09-18 16:33:14

标签: asp.net-mvc cultureinfo

在我看来,文化价值是正确的。但是在我的ajax HttpPost方法中,这种文化是错误的。我的目标是检查URL lang是否为空检查cookie是否再次为空我从客户端获取语言(英语,德语,土耳其语),如果客户端还有其他lang,则默认为土耳其语。我尝试用例子来解释。我的框架是4.7.2

这是我的OnActionExecuting:

protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (filterContext.HttpContext.Request.HttpMethod == "GET")
        {
            var domainLang = RouteData.Values["lang"] as string;
            if (!string.IsNullOrEmpty(domainLang) && !string.IsNullOrWhiteSpace(domainLang))
            {
               //CurrentInfo is my class it is getting values from DB for once
                bool avaibleLang = CurrentInfo.AvailableLanguages.Count(x => x.DilKey == domainLang) > 0;
                if (avaibleLang)
                {
                    var langCookie = CurrentInfo.CurrentLang;
                    if (domainLang != langCookie.DilKey)
                    {
                        ClientCookieManagement.CreateCookie(CookieEnum.Language.GetStringValue(), domainLang, 7);
                    }
                }
                else
                {
                    domainLang = CurrentInfo.CurrentLang.DilKey;
                }
            }
            Thread.CurrentThread.CurrentUICulture = new CultureInfo(domainLang ?? CurrentInfo.CurrentLang.DilKey);
        }

        base.OnActionExecuting(filterContext);
    }

我查看了自己的文化,这是正确的。

@Thread.CurrentThread.CurrentUICulture
@Thread.CurrentThread.CurrentCulture

但是,如果我使用ajax提交或发布内容,则文化是错误的

CultureInfo.CurrentUICulture

我的网络配置

<globalization culture="tr-TR" -uiCulture="tr-TR"/> Default lang is TR 

问题

如果我提交或其他任何内容,我需要在控制器中获取正确的值。我在做什么错了?

0 个答案:

没有答案