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