部分视图上的淘汰缓存 - 强制刷新
Knockout Caching on Partial Views - Force refresh
我在使用带有 MVC 部分视图的 Knockout 和 Knockout.mapping 插件开发的应用程序时遇到问题。
背景
我想实现一个门户,用户可以在其中拥有不同的配置文件,因此我让他们可以选择 select 他们想要多少个配置文件并为其命名。在此之后,他们进入下一个页面,在那里他们配置他们的个人资料,每个个人资料由相同的属性和字段组成,在一天结束时他们都去相同的 table,只是有不同的 "ProfileID"
当前情况
我有一个只有一个下拉列表的视图,其中列出了不同配置文件的名称,一旦配置文件被 selected,将呈现一个部分视图以显示 editable向用户提供信息,这里我使用 knockout 让用户在客户端 add/Delete 属性,然后使用 Ajax 请求我 post 将这些更改存入数据库。在控制器的 Post 方法上,我 return 一个 JSON 对象来更新 Knockout ViewModel 绑定,我可以成功地做到这一点。到目前为止还不错吧?
问题
一旦用户保存了他们的一个配置文件,他们可能会去编辑下一个配置文件,做任何事情,然后可能会返回到他们已经编辑过的配置文件。这就是问题所在:页面上显示的信息是他们原来的信息,也就是说,旧信息。我已经跟踪了所有内容,尽管数据库中的数据正常,但问题是浏览器甚至没有再次向服务器请求信息,这意味着它可能已被缓存?如果是这样,我该如何强制浏览器始终从服务器请求信息,或更新缓存的 viewModel?
注意与回答
我终于意识到它与 Knockout 无关,而只是一般缓存,解决它的方法是通过添加这段代码来禁用控制器中 return 局部视图的缓存:
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
我终于意识到它与 Knockout 无关,而只是一般缓存,解决它的方法是禁用控制器中会 return 局部视图的缓存,方法是添加此一段代码:
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
我在使用带有 MVC 部分视图的 Knockout 和 Knockout.mapping 插件开发的应用程序时遇到问题。
背景
我想实现一个门户,用户可以在其中拥有不同的配置文件,因此我让他们可以选择 select 他们想要多少个配置文件并为其命名。在此之后,他们进入下一个页面,在那里他们配置他们的个人资料,每个个人资料由相同的属性和字段组成,在一天结束时他们都去相同的 table,只是有不同的 "ProfileID"
当前情况
我有一个只有一个下拉列表的视图,其中列出了不同配置文件的名称,一旦配置文件被 selected,将呈现一个部分视图以显示 editable向用户提供信息,这里我使用 knockout 让用户在客户端 add/Delete 属性,然后使用 Ajax 请求我 post 将这些更改存入数据库。在控制器的 Post 方法上,我 return 一个 JSON 对象来更新 Knockout ViewModel 绑定,我可以成功地做到这一点。到目前为止还不错吧?
问题
一旦用户保存了他们的一个配置文件,他们可能会去编辑下一个配置文件,做任何事情,然后可能会返回到他们已经编辑过的配置文件。这就是问题所在:页面上显示的信息是他们原来的信息,也就是说,旧信息。我已经跟踪了所有内容,尽管数据库中的数据正常,但问题是浏览器甚至没有再次向服务器请求信息,这意味着它可能已被缓存?如果是这样,我该如何强制浏览器始终从服务器请求信息,或更新缓存的 viewModel?
注意与回答 我终于意识到它与 Knockout 无关,而只是一般缓存,解决它的方法是通过添加这段代码来禁用控制器中 return 局部视图的缓存:
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
我终于意识到它与 Knockout 无关,而只是一般缓存,解决它的方法是禁用控制器中会 return 局部视图的缓存,方法是添加此一段代码:
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]