У меня есть действие контроллера, которое получает параметр типа Person
. Параметр связан с запросом JSON с использованием функции привязки модели JSON.Использовать выходное кэширование VaryByParam с запросом JSON
В этом случае мой VaryByParam
не работает, потому что запрос не содержит никаких «классических» переменных (например, GET или POST), но в этом случае данные находятся в теле HTTP. На стороне клиента я использую KnockoutJS
, поэтому я отправляю данные с использованием метода ko.toJSON
.
Как я могу достичь выходного кэширования на основе значения поля в запросе JSON?
Пример только для демонстрации.
// model
public class Person {
public int PersonID { get; set; }
public string Name { get; set; }
}
// action
[OutputCaching(Duration = 60, VaryByParam = "PersonID")]
public JsonResult Process(Person person) {
...
}
// client-side
$.post({
url: '/mycontroller/myaction',
...
data: ko.toJSON(personViewModel),
...
});
спасибо, я в курсе VaryByCustom, я использовал его, чтобы указать кэширование на уровень пользователя. Тем не менее, для реализации этого, кажется, довольно сложно, потому что я должен «слепо» разобрать тело запроса JSON каким-то образом, чтобы извлечь требуемые свойства, я точно не вижу, с чего начать, но я попробую. –