在完成替换之前调用ASP.NET MVC Ajax ActionLink OnComplete回调?

时间:2009-09-30 04:32:42

标签: asp.net jquery asp.net-mvc

我有一个相当简单的ajax动作链接。操作链接的目的是从服务器获取部分视图,并用新内容替换div的内容。

代码类似于:

<%= Ajax.ActionLink("click me", "GetThing", 
    new { Mode = "Simple"}, 
    new AjaxOptions { 
        UpdateTargetId = "thingDiv", 
        OnComplete = "completeGetThing"
    })%>

如您所见,操作链接只是用服务器中的新内容替换页面(thingDiv)中div标签的内容。

我还为OnComplete事件调用了一个javascript函数。这里的回调函数需要对加载到thingDiv中的内容做一些事情。

以下是我在javascript中所做的简化示例:

function completeGetThing{
    if($("#thingDiv #subThing").length > -1){
        doOtherThing();
    }
}

我只是使用jQuery从我们正在更新的div中获取一个名为“subThing”的元素。

但是我发现OnComplete函数似乎在thingDiv中的HTML被实际替换之前触发了......所以当我的回调去寻找“subThing”元素时,它找不到它。

这是我正在做的非常简单的例子。

我正在寻找关于我如何解决这个问题的好建议,或者更好地指出我忽略了可以完成工作的事情。

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以尝试查看completeGetThing是否实际正在运行(在此处设置警报)。我们遇到了问题,最终使用OnSuccess事件而不是OnComplete。我们正在使用此事件为加载的表着色,并且它可以正常工作。

答案 1 :(得分:1)

我使用OnSuccess。和Sly一样,它有效。