我們正在使用Couchbase作爲我們的Session和OutputCache。OutputCache因使用來自會話的ModelBinder傳遞的複雜對象屬性而異
在這種情況下,我們如何通過使用自定義模型綁定器傳遞給方法的複雜對象進行緩存,從而從Session中檢索值?
這是我想與OutputCache
屬性緩存方法的簽名:
[HttpGet]
[OutputCache(CacheProfile = "MyObjectsCache", VaryByParam = "myParam")]
public ActionResult Index([ModelBinder(typeof (CustomVariableSessionModelBinder<MyClass>))] MyClass myParam)
{
注:ModelBinder的正在這裏用來超越我的原因,我不能改變它。
MyClass是一個具有Id的複雜對象。我想使用Id作爲緩存標識符。
public class MyClass
{
public int Id{get;set;}
//Other Properties
這是怎樣的對象正在從會話檢索:
var sessionKey = typeof (MyNamespace.MyClass).FullName;
var httpContext = HttpContext.Current;
MyNamespace.MyClass newObject = null;
if (httpContext.Session != null)
{
newObject = httpContext.Session[sessionKey] as MyNamespace.MyClass;
}
是否有可能喲這種情況下使用VaryByParam
否則我將不得不使用VaryByCustom
?