我有一个用于搜索的 Asp.net MVC 部分 View 。它执行 Ajax 调用来检索结果。检索结果并在结果 Pane 中显示后,用户可以单击任何结果行中的链接来选择搜索结果之一。当用户单击链接选择其中一个搜索结果时,它将发出 Ajax post 请求来更新某些状态。一旦此 Ajax 调用完成,我需要重定向到另一个页面,但目标页面取决于用户所在的页面。此搜索部分 View 将托管在多个页面中,并且每个托管页面的重定向位置都将不同。我想不出一种有意义的方法来做到这一点,并且不会过度地将部分 View 耦合到托管页面(反之亦然)。
我猜另一个选项可能是在选择 Ajax 调用完成后重定向到另一个页面(这是最终的目标),但是 Ajax 调用中的重定向结果不会被吞没吗?
或者是否有一种方法可以在每行上放置一个按钮或链接,从而导致发生可能返回重定向结果的发布请求,并且目标基于调用页面?
最佳答案
我最终使用了一种 TemplateMethod 模式来完成这项工作。在我的部分中,我添加了 JavaScript 函数:
function onActionCompleted() {
DoSomethingLocal();
if (typeof DoSomethingInParentPage == 'function') {
DoSomethingInParentPage();
}
}
这会检查该函数是否存在并且是一个函数,如果是则调用该函数。为了实现此功能,托管页面可以选择实现 DoSomethingInParentPage 方法,以在部分操作完成时完成某些操作。我不确定如何检查参数匹配,但至少当部分完成其工作时我接到一个电话。
关于javascript - 当部分 View 中的ajax调用完成时,如何在主机MVC页面上调用javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1135328/