2
我已經定義的路由文化/控制器/動作/ ID ...我控制器包含以下動作..緩存在Asp.net基於URL參數MVC
[OutputCache(Duration=60*10)]
public ActionResult Index()
{*/do magic here/*}
是有可能緩存基於內容文化?
我已經定義的路由文化/控制器/動作/ ID ...我控制器包含以下動作..緩存在Asp.net基於URL參數MVC
[OutputCache(Duration=60*10)]
public ActionResult Index()
{*/do magic here/*}
是有可能緩存基於內容文化?
localization complete guide介紹瞭如何使用VaryByCustom
參數實現此目的的示例。在Global.asax中,你會重寫GetVaryByCustomString
方法:
public override string GetVaryByCustomString(HttpContext context, string value)
{
if (value == "lang")
{
return Thread.CurrentThread.CurrentUICulture.Name;
}
return base.GetVaryByCustomString(context, value);
}
然後:
[OutputCache(Duration = 60 * 10, VaryByParam = "none", VaryByCustom = "lang")]
public ActionResult Index()
{
/* do magic here */
...
}
或者,如果你想僅僅依靠文化路線數據參數,你可以這樣做:
public override string GetVaryByCustomString(HttpContext context, string value)
{
if (value == "lang")
{
var routeData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(context));
var culture = (string)routeData.Values["culture"];
if (!string.IsNullOrEmpty(culture))
{
return culture;
}
}
return base.GetVaryByCustomString(context, value);
}