ウェブサイトのローカライゼーションがmvcコントローラーのすべての要求に対して現在のスレッドを読み込み、その情報に基づいて部分ビューが読み込まれる(各言語の部分ビューが異なるため)部分文字列以外の文字列は、リソース文字列を使用してローカライズされます。スレッドが変更されている場合のコントローラーアクションのキャッシング
コントローラローカライズのカスタム属性
[Localize]
public class HomeController : Controller
{
public ActionResult Index()
{
string partialView = string.Empty;
switch (Thread.CurrentThread.CurrentCulture.ToString())
{
case "en-US":
partialView = "english";
....
}
ViewBag.PartialViewName = partialView;
return View();
}
}
を設定するには、データアノテーションを使用して、私の質問は:どのように私は は、7種類の言語があることを知って、この
Index
アクションをキャッシュすることができますか?
アップデート: 私は例えば
[OutputCache(Duration = 300)]
public ActionResult Index()
{}
を使用している場合、私はスイッチング言語能力を失っています。
public override string GetVaryByCustomString(HttpContext context, string arg)
{
if (arg.Equals("CurCulture"))
{
var culture = Thread.CurrentThread.CurrentUICulture;
return culture;
}
return base.GetVaryByCustomString(context, arg);
}
今、あなたのoutputcacheがキャッシュされ、あなたの意見を、現在のユーザーに基づいて:
どうやってキャッシングしていますか? – DavidG