2016-12-30 15 views
0

私のAsp.Net MVCアプリケーションでは、ユーザーは別のシステムから来ており、私は以下のようにログインしています。Asp.Net MVC手動でキャッシュをクリアせずにリソース値を変更する

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 }); 

このような現在の培養物を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); 
} 

私の閲覧ページ私は以下のようなリソースファイルからテキスト値を設定しています。

<span class="pageButton"> @Global.Cancel </span> 

しかし、私は他のシステムからユーザーの言語を変更し、私のシステムに再度ログインしたときに、すべてのテキストは、前の言語にまだあります。 Ctrl + F5でページを更新した後、すべてが真の言語で表示されます。

キャッシュを手動でクリアせずにページテキストを新しい言語で読み込む方法はありますか?

答えて

0

クッキーvar cookie = Request.Cookies["_culture"];問題、まだきれいな、古い値を維持するときにログオフまたはあなたがログインするために、再度

をしようとすると、そして、あなたは文化に

Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(cultureName); 
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture; 
を設定することも Thread.CurrentThreadを使用することができます
関連する問題