Ajax.ActionLink只是第一次触发

时间:2011-11-19 10:52:19

标签: asp.net-mvc jquery

我的观点中有一个ActionLink。单击时,我的控制器中的操作被触发(我放置了一个断点来检查)。它仅在第一次单击链接时起作用。其他时候,我的动作控制器中的断点永远不会到达。

@Ajax.ActionLink("Remove image", "RemoveImage", new { projectID = Model.ProjectID }, new AjaxOptions { OnSuccess="ImageRemovedSuccess" })   

OnSuccess ajax事件的函数“ImageRemovedSuccess”被很好地触发了,但是没有触发控制器中的动作。

有什么建议吗?

感谢。

2 个答案:

答案 0 :(得分:20)

您的浏览器会缓存响应。因此,第二次发送请求时,浏览器不会将其转发到服务器,因为之前已向服务器发送了相同的请求,浏览器将向页面返回缓存的响应。

装饰动作方法,不要在两者之间缓存响应。

    [OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
    public ActionResult RemoveImage(int projectID)
    {

    }

确保在检查之前按下浏览器上的“Ctrl + F5”。

答案 1 :(得分:1)

部分视图的附加答案(仅限)

部分视图不喜欢设置NoStoreDuration为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.获得NoStoreDuration must be positive如果设置Duration=0则会出现 [OutputCache(Duration = 1, VaryByParam = "*")] 的其他错误

部分视图的修复(与普通视图兼容)是:

{{1}}

此缓存最长为一秒,对于正常操作应该没问题。