我在MVC4应用程序中使用ASP.NET MVC Wrapper。
除了一个特定问题外,一切正常: 我为Kendo UI Grid定义了一个数据源,当视图加载时,正在按预期调用读取操作。
但是,当页面重新加载时,“read”请求会得到一个304结果的响应。
如何通过数据源配置禁用缓存?
答案 0 :(得分:14)
您可以将Kendo dataSource中的'cache'属性设置为false,这显然(注意:我没有对此进行测试)将强制在每次请求时重新获取所请求的页面。
将cache设置为false会在请求中附加“_ = [TIMESTAMP]”参数,如果需要,可以在服务器/控制器端解析该参数,以避免服务器端缓存操作。
另请注意,您可以为每个Kendo传输操作指定缓存行为(即,它可以处于CRUD操作级别或整个传输级别)。
见这里:http://docs.kendoui.com/api/framework/datasource#configuration-transport.read.cache-Boolean
代码:
transport: {
read: {
cache: false
}
}
答案 1 :(得分:9)
.Read(read => read.Action(“Action”,“Controller”,new {area =“Area”})。Type(HttpVerbs.Post))
答案 2 :(得分:5)
您可以尝试使用
加载视图的服务器端控制器操作[OutputCache(Duration = 0, NoStore = true)]
属性,例如
public class OrdersController : Controller
{
[httpGet]
[OutputCache(NoStore = true, Duration = 0)]
public ActionResult Orders(string userId)
{
// your code
return View(viewModel);
}
}
NoStore
- 一个布尔值,用于确定是否阻止敏感信息的二级存储
Duration
- 缓存页面或用户控件的时间(以秒为单位)。在页面或用户控件上设置此属性会为对象的HTTP响应建立过期策略,并自动缓存页面或用户控件输出。
答案 3 :(得分:0)
不能通过Datasource配置控制器。您必须将属性应用于控制器上的Read方法以防止缓存。
另一种方法是将[HttpPost]属性应用于控制器方法。然后将数据源配置为NOT使用GET方法,在这种情况下,它将默认使用POST方法。