我在razor视图引擎中使用jqgrid和MVC3,在jqgrid中我有一个下拉列,我加载了下拉列表...
colModel: [{
name: 'Company',
index: 'Company',
width: 200,
editable: true,
edittype: 'select',
editoptions: {
dataUrl: '@Url.Action("PopulateDropdown", "ControllerName")'
}]
如果我有100行,那么控制器动作被调用100次。因此我在mycontroller中使用了[OutputCache(Duration = 10, VaryByParam = "none", VaryByCustom = "Browser")]
。
请提出任何其他想法,以便下拉列表项仅在视图中获取一次,并使用相同的方法绑定其余项。
答案 0 :(得分:1)
你有100行,你不需要一次编辑所有行。通常,使用内联编辑或表单编辑来编辑一个指定的行。然后通过按 Enter 并选择另一行来保存该行。因此,只有一行将被编辑,而所有其他行将只在相应的单元格中有一些文本。
另一方面,如果您确实需要从'@Url.Action("PopulateDropdown", "ControllerName")'
缓存服务器响应,则可以直接在JSON响应的HTTP标头中设置Cache-Control: max-age=60
:
Response.CacheSetMaxAge (new TimeSpan (0, 1, 0)); // cache for 1 minute