C# Asp.Net MVC在不手动清除缓存的情况下更改资源值

C# Asp.Net MVC在不手动清除缓存的情况下更改资源值,c#,asp.net-mvc,multilingual,C#,Asp.net Mvc,Multilingual,在我的Asp.NETMVC应用程序中,用户来自另一个系统,我将像下面这样将他们登录 IAccount account = null; if (userType == UserType.SystemUser) account = _accountService.CheckSystemUser(userId); if (userType == UserType.Employee) account = _accountService.CheckEmployee(userId); i

在我的Asp.NETMVC应用程序中,用户来自另一个系统,我将像下面这样将他们登录

IAccount account = null;

if (userType == UserType.SystemUser)
    account = _accountService.CheckSystemUser(userId);
if (userType == UserType.Employee)
    account = _accountService.CheckEmployee(userId);

if (account == null) throw new Exception(ErrorMessages.UserNotFound);

var roles = account.Roles.ToArray();

var principalModel = new CustomPrincipalViewModel
{
    UserId = account.UserId.ToString(),
    FullName = account.FullName,
    Roles = roles,
    Language = account.Language
};

var userData = JsonConvert.SerializeObject(principalModel);
var ticket = new FormsAuthenticationTicket(1, principalModel.FullName, DateTime.Now, DateTime.Now.AddMinutes(30), false, userData);
var encryptedTicket = FormsAuthentication.Encrypt(ticket);
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
Response.Cookies.Add(cookie);

SetCulture(account.Language.CultureCode);

return Json(new { isSuccess = true, userFullName = account.FullName });
<span class="pageButton"> @Global.Cancel </span>
使用
SetCulture
方法设置当前区域性

private void SetCulture(string culture)
{
    culture = CultureHelper.GetImplementedCulture(culture);
    var cookie = Request.Cookies["_culture"];
    if (cookie != null)
    {
        cookie.Value = culture;
        cookie.Expires = DateTime.Now.AddYears(1);
    }
    else
    {
        cookie = new HttpCookie("_culture")
        {
            Value = culture,
            Expires = DateTime.Now.AddYears(1)
        };
    }
    Response.Cookies.Add(cookie);
}
在我的查看页面中,我正在设置资源文件中的文本值,如下所示

IAccount account = null;

if (userType == UserType.SystemUser)
    account = _accountService.CheckSystemUser(userId);
if (userType == UserType.Employee)
    account = _accountService.CheckEmployee(userId);

if (account == null) throw new Exception(ErrorMessages.UserNotFound);

var roles = account.Roles.ToArray();

var principalModel = new CustomPrincipalViewModel
{
    UserId = account.UserId.ToString(),
    FullName = account.FullName,
    Roles = roles,
    Language = account.Language
};

var userData = JsonConvert.SerializeObject(principalModel);
var ticket = new FormsAuthenticationTicket(1, principalModel.FullName, DateTime.Now, DateTime.Now.AddMinutes(30), false, userData);
var encryptedTicket = FormsAuthentication.Encrypt(ticket);
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
Response.Cookies.Add(cookie);

SetCulture(account.Language.CultureCode);

return Json(new { isSuccess = true, userFullName = account.FullName });
<span class="pageButton"> @Global.Cancel </span>
@Global.Cancel
但当我从其他系统更改用户语言并再次登录到我的系统时,所有文本仍使用以前的语言。在我用ctrl+F5刷新页面后,所有内容看起来都是真实的语言


有没有办法在不手动清除缓存的情况下强制加载新语言的页面文本?

cookie
var cookie=Request.Cookies[“_culture”]中的问题,仍保留旧值,在注销或尝试再次登录时将其清除

您还可以使用
Thread.CurrentThread
设置区域性

Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(cultureName);
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;