У меня есть привязка модели класса I, и я хочу использовать выходное кэширование с ней. Я не могу найти способ, чтобы получить доступ к связанному объекту в GetVaryByCustomString
VaryByCustom и привязка к модели
Например:
public class MyClass
{
public string Id { get; set; }
... More properties here
}
public class MyClassModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var model = new MyClass();
... build the class
return model;
}
}
Я поставил вяжущего в Global.cs
ModelBinders.Binders.Add(typeof(MyClass), new MyClassModelBinder());
И затем использовать кэширование вывода, как это ,
[OutputCache(Duration = 300, VaryByCustom = "myClass")]
public ActionResult MyAction(MyClass myClass)
{
.......
public override string GetVaryByCustomString(HttpContext context, string custom)
{
... check we're working with 'MyClass'
var routeData = RouteTable.Routes.GetRouteData(new HttpContextWrapper(context));
var myClass = (MyClass)routeData.Values["myClass"]; <-- This is always null
myClass не входит в событие таблицы маршрутов, хотя модель переплетена.
Любая помощь, как всегда, будет наиболее желанной.
Приветствия
Чувствуется немного хакерским, но он работает. Приветствия. – Magpie
@ Магпи, приветствия. –