MVC Ajax表单javascript未使用InsertionMode=InsertionMode.InsertAfter激发

MVC Ajax表单javascript未使用InsertionMode=InsertionMode.InsertAfter激发,javascript,jquery,asp.net-mvc,kendo-ui,asp.net-mvc-ajax,Javascript,Jquery,Asp.net Mvc,Kendo Ui,Asp.net Mvc Ajax,我正在使用mvcAjax.BeginForm加载一个包含剑道组合框的局部视图 在表单的AjaxOptions中使用InsertionMode=InsertionMode.ReplaceWith时,一切正常,局部视图加载了剑道功能 但是,当将InsertionMode更改为InsertionMode=InsertionMode.InsertAfter时,会加载部分视图,但没有剑道功能,我得到一个简单的文本框,而不是自动完成组合框 我已经检查了这两个场景的页面源代码,我可以在这两个场景中看到kend

我正在使用mvc
Ajax.BeginForm
加载一个包含剑道组合框的局部视图

在表单的AjaxOptions中使用
InsertionMode=InsertionMode.ReplaceWith
时,一切正常,局部视图加载了剑道功能

但是,当将InsertionMode更改为
InsertionMode=InsertionMode.InsertAfter
时,会加载部分视图,但没有剑道功能,我得到一个简单的文本框,而不是自动完成组合框

我已经检查了这两个场景的页面源代码,我可以在这两个场景中看到kendo jquery脚本,但它似乎只有在使用ReplaceWith时才会被触发

我正在使用的代码:

@using (Ajax.BeginForm("AddNewPlanDetail", "Plans", new AjaxOptions
{
   UpdateTargetId = "AdditionalPlanDetailsHolder",
   InsertionMode = InsertionMode.InsertAfter,//<--only changed this
   HttpMethod = "Post",
   OnFailure = "handleAjaxError"
}))
{  ......  }
我的部分视图Partial1.chtml:

<b>This is from partial</b>
<script>
alert('Fired');
</script>
这是来自部分
警报(“开火”);

警报脚本被触发,但仅当使用
InsertionMode=InsertionMode.ReplaceWith

时才会触发,因为在DOM中添加新元素时,您需要将插件附加到它<代码>$(您的新元素)可以在
OnComplete
属性中执行。因此,您还没有发布视图,但是剑道脚本应该位于主视图(而不是部分视图)中,否则会包含多个脚本times@Stephen,这也是我的想法,但令我惊讶的是,它在没有“OnComplete”的情况下确实有效。我已经编辑了这个问题并添加了一个简单的示例。其他检查:
InsertionMode.Replace
:启动脚本
InsertionMode.InsertBefore
:脚本没有firedInteresting(需要进一步研究)。但是如果您添加
OnComplete=“myScript”
var myScript=function(){alert('Fired')}
,那么无论
InsertionMode
值如何,您每次都会收到警报,因此我认为这是将插件连接到已添加到DOM中的新元素的地方
public class AjaxTestController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult GetPartial()
    {
        return PartialView("Partial1");
    }
}
<b>This is from partial</b>
<script>
alert('Fired');
</script>