C# Asp.Net MVC在不手动清除缓存的情况下更改资源值
在我的Asp.NETMVC应用程序中,用户来自另一个系统,我将像下面这样将他们登录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
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;