以下是我的部分观点:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<script type="text/javascript">
function myFunction() { .... }
</script>
....other html content ...
在我的页面上,我有一个调用控制器操作的链接来呈现局部视图:
<%= Ajax.ActionLink(..., new AjaxOptions { ..., OnSuccess = "myFunction" }) %>
这是我的控制器操作: ... 返回PartialView(“TestControl”); ...
我认为这很简单。不幸的是,我收到了JavaScript错误:
Microsoft JScript运行时错误:'myFunction'未定义。
当我在AJAX调用后检查生成的页面源时,我可以在源代码中看到myFunction
。但是,在AJAX的OnSuccess
中,不知何故它不知道这个函数。有什么我错过了吗?有没有办法可以调用脚本,它是通过AJAX加载的局部视图的一部分? (我试图使用eval()
,不知何故我无法解析该函数。)
提前致谢。
答案 0 :(得分:0)
OnSuccess可能在将部分视图注入DOM之前发生;你可能最好在定义后立即调用myFunction
:
function myFunction(){
//code here
}
myFunction();
这样,myFunction
在定义之后立即被调用(因为部分视图逻辑将脚本引用注入到DOM中,所以在实际更新局部视图之后会尽快调用它)。
如果myFunction
对部分视图的内容进行操作,则可能必须将脚本引用移动到局部视图的末尾,以便在执行JS之前呈现其操作的DOM。 / p>