部分视图中的ajax调用完成后,如何在主机MVC页面上调用javascript?

时间:2009-07-16 04:03:38

标签: javascript ajax model-view-controller partial-views

我有一个用于搜索的Asp.net MVC局部视图。它执行Ajax调用以检索结果。检索结果并在结果窗格中显示后,用户可以单击任何结果行中的链接以选择其中一个搜索结果。当用户单击链接以选择其中一个搜索结果时,它将发出Ajax发布请求以更新某些状态。完成此Ajax调用后,我需要重定向到另一个页面,但目标页面取决于用户所在的页面。此搜索部分视图将托管在多个页面中,并且每个主机页面的重定向位置将不同。我想不出一种方法来做这个有意义的方法,并且不会过度地将局部视图耦合到托管页面(反之亦然)。

我猜另一个选项可能是在选择Ajax调用完成后重定向到另一个页面(这最终是目标),但不会吞下Ajax调用中的重定向结果吗?

或者有没有办法在每一行上都有一个按钮或链接,而这会导致发出一个可能返回重定向结果的帖子请求,目的地基于调用页面?

1 个答案:

答案 0 :(得分:1)

我最终使用了一种TemplateMethod模式来完成这项工作。在我的部分我添加了JavaScript函数:

function onActionCompleted() {
    DoSomethingLocal();
    if (typeof DoSomethingInParentPage == 'function') {
        DoSomethingInParentPage();
    }
} 

这将检查函数是否存在并且是否为函数,如果是,则调用该函数。为了使其工作,托管页面可以选择实现方法DoSomethingInParentPage以在部分中完成操作时完成某些操作。我不确定如何检查参数匹配,但至少我在部分完成工作时接到一个电话。