MVC Ajax.BeginForm局部刷新后运行Javascript

5
我有一个使用ASP.NET MVC2的场景。
我有一个部分视图,它使用Ajax.BeginForm允许部分后台提交,其中AjaxOptions的OnSuccess属性指向js函数onPartialReloadSuccess。updateTargetId位于父视图“Application”中,如BeginForm脚本所引用的那样。
这个部分视图本身呈现了许多其他部分视图,这些视图的名称是基于模型动态生成的。
<% using (Ajax.BeginForm("Application", new AjaxOptions { UpdateTargetId = "mainframe", OnSuccess = "onPartialReloadSuccess" })) { %>

    <div id="breadcrumbs">
        <% Html.RenderPartial(Model.Breadcrumbs, Model);%>
    </div>

    <div id="action">
        <% Html.RenderPartial(Model.CurrentView, Model);%>
    </div>

<% } %>

我的问题如下:在部分 postback 后,“onPartialReloadSuccess” JavaScript 函数成功调用,但子视图中包含的 JavaScript 都没有重新运行。它们最初是设置为在 jQuery $(document).ready() 之后运行的... 这在部分 postback 上显然无法工作。
我的问题是这样的 - 有没有办法确保这些重新渲染的部分视图上的 JavaScript 被运行?我看到了许多 asp.net 表格的解决方案(使用 ScriptManager 和 PageRequestManager),但没有针对 ASP.NET MVC 的特定解决方案?
感谢您提前的帮助!

在ASP.NET MVC 3中,由于它使用jQuery AJAX(可以在加载的内容中神奇地运行JS),所以OOTB无法正常工作?那么也许使用jQuery AJAX对您来说也是一个选项。 - bzlm
2个回答

1
你可以将这些脚本外部化为单独的函数,然后在onPartialReloadSuccess函数中显式调用这些函数。同时,在document.ready中也调用它们,以确保初始加载正常运行。

0

看起来我在http://adammcraventech.wordpress.com/2010/06/11/asp-net-mvc2-ajax-executing-dynamically-loaded-javascript/找到了我需要的答案,以下是引用解释问题的内容:

我一直在尝试使用ASP.NET MVC2,并且当我通过MVC2 AJAX动态加载部分视图时,我遇到了MVC2客户端验证无法工作的问题。经过进一步调查,我发现这个问题不仅限于MVC2客户端验证,而是所有通过MVC2 AJAX动态加载的JavaScript都会出现这个问题。这个问题与响应注入到DOM元素中的方式有关-通过InnerHTML属性。注入到该属性中的任何脚本块都将不会被执行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接