我的观点中有一个ActionLink。单击时,我的控制器中的操作被触发(我放置了一个断点来检查)。它仅在第一次单击链接时起作用。其他时候,我的动作控制器中的断点永远不会到达。
@Ajax.ActionLink("Remove image", "RemoveImage", new { projectID = Model.ProjectID }, new AjaxOptions { OnSuccess="ImageRemovedSuccess" })
OnSuccess ajax事件的函数“ImageRemovedSuccess”被很好地触发了,但是没有触发控制器中的动作。
有什么建议吗?
感谢。
答案 0 :(得分:20)
您的浏览器会缓存响应。因此,第二次发送请求时,浏览器不会将其转发到服务器,因为之前已向服务器发送了相同的请求,浏览器将向页面返回缓存的响应。
装饰动作方法,不要在两者之间缓存响应。
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public ActionResult RemoveImage(int projectID)
{
}
确保在检查之前按下浏览器上的“Ctrl + F5”。
答案 1 :(得分:1)
部分视图不喜欢设置NoStore
或Duration
为0.
Additional information: OutputCacheAttribute for child actions only supports Duration, VaryByCustom, and VaryByParam values. Please do not set CacheProfile, Location, NoStore, SqlDependency, VaryByContentEncoding, or VaryByHeader values for child actions.
获得NoStore
,Duration must be positive
如果设置Duration=0
则会出现 [OutputCache(Duration = 1, VaryByParam = "*")]
的其他错误
部分视图的修复(与普通视图兼容)是:
{{1}}
此缓存最长为一秒,对于正常操作应该没问题。