【问题标题】:Running Javascript after an MVC Ajax..BeginForm partial postback在 MVC Ajax..BeginForm 部分回发之后运行 Javascript
【发布时间】:2011-11-22 11:50:23
【问题描述】:

我有以下使用 ASP.NET MVC2 的场景

我有一个部分视图,它使用 Ajax.BeginForm 来允许部分回发,AjaxOptions 的 OnSuccess 属性指向 js 函数 onPartialReloadSuccess。 updateTargetId 位于 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>

<% } %>

我的问题如下 - 在部分回发后,'onPartialReloadSuccess' js 函数被成功调用而没有问题,但是子视图中包含的所有 javascript 都没有重新运行。 p>

它们最初设置为在 jQuery $(document).ready() 之后运行...这显然不适用于部分回发

我的问题是 - 有没有办法确保这些重新渲染的部分视图上的 javascript 运行?我看到很多针对 asp.net 表单的解决方案(使用 scriptmanager 和 PageRequestManager),但没有针对 ASP.NET MVC 的特定解决方案?

提前感谢您的帮助

【问题讨论】:

  • 在 ASP.NET MVC 3 中无法使用 OOTB,因为它使用 jQuery AJAX(在加载的内容中神奇地运行 JS)?那么也许使用 jQuery AJAX 也是您的一个选择。

标签: javascript jquery asp.net-mvc


【解决方案1】:

看起来我在http://adammcraventech.wordpress.com/2010/06/11/asp-net-mvc2-ajax-executing-dynamically-loaded-javascript/ 找到了我需要的答案,并附有解释问题的引文

我一直在修补 ASP.NET MVC2,但当我通过 MVC2 >AJAX 动态加载部分视图时,我遇到了 MVC2 >Client Validation 不起作用的问题。经过进一步调查,我发现问题不仅限于 MVC2 >Client Validation,还涉及通过 MVC2 AJAX 动态加载的所有 JavaScript。 > 问题与将响应注入 DOM 元素的方式有关——通过 >InnerHTML 属性。任何注入该属性的脚本块都不会被执行。

【讨论】:

    【解决方案2】:

    您可以将这些脚本外部化为单独的函数,然后在 onPartialReloadSuccess 函数中显式调用此函数。也可以在 document.ready 中调用它们,以便初始加载也可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多