我使用ASP.NET MVC2获得了以下场景
我有一个部分视图,它使用Ajax.BeginForm来允许部分回发,AjaxOptions的OnSuccess属性指向js函数onPartialReloadSuccess。 updateTargetId位于BeginForm脚本中引用的父视图“Application”上。
这个局部视图本身会呈现许多其他部分视图,其名称是根据模型动态生成的
<% 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被重新运行。
它们最初被设置为在jQuery $(文档).ready()之后运行...这显然不适用于部分回发
我的问题是 - 有没有办法确保运行这些重新渲染的部分视图上的javascript?我看到很多asp.net表单的解决方案(使用scriptmanager和PageRequestManager),但没有什么特别的ASP.NET MVC?
提前感谢任何帮助
答案 0 :(得分:0)
您可以将这些脚本外部化为单独的函数,然后在onPartialReloadSuccess
函数中显式调用此函数。也可以在document.ready
中调用它们,以便初始加载也能正常工作。
答案 1 :(得分:0)
看起来我在http://adammcraventech.wordpress.com/2010/06/11/asp-net-mvc2-ajax-executing-dynamically-loaded-javascript/找到了我需要的答案,下面的引言解释了这个问题
我一直在修改ASP.NET MVC2一段时间,当我通过MVC2&gt; AJAX动态加载部分视图时,我遇到了MVC2&gt;客户端验证不起作用的问题。经过进一步调查,我发现问题不仅限于MVC2&gt;客户端验证,而是限制通过MVC2 AJAX动态加载的所有JavaScript。 &gt;问题与将响应注入DOM元素的方式有关 - 通过&gt; InnerHTML属性。注入该属性的任何脚本块都不会被执行。