Ajax.ActionLink()呈现部分视图脚本但JavaScript代码却没有

时间:2015-09-18 09:29:10

标签: javascript ajax asp.net-mvc asp.net-ajax

我在我的MVC应用程序中使用Kendo Grid。 Grid有一个Command列,其中包含一个自定义按钮,用于调用Javascript函数,该函数向服务器发送ajax请求以获取部分视图以替换#AjaxDiv innerHtml,如下所示:

    function BrandDetailView(e) {
    var dataItem = this.dataItem($(e.target).closest("tr"));
    var brandID = dataItem.PKBrand;

    var xmlhttp;
    xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function () {

        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById("AjaxDiv").innerHTML = xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET", "/Brand/Details/" + brandID, true);
    xmlhttp.send()
}

详细信息部分视图包含Kendo DropDownList,用于在其包含div的内部生成脚本。如果我向服务器发送请求如上所述,这些脚本将不起作用,但如果我在下面创建Ajax.ActionLink(),它们将起作用。

@Ajax.ActionLink("Detail", "Details", new { id = 2 }, new AjaxOptions() 
{
    UpdateTargetId="AjaxDiv",
    HttpMethod="GET",
    InsertionMode=InsertionMode.Replace 
})

我坚持使用Grid上的Detail按钮,任何解决方案如何以这种方式呈现脚本?

1 个答案:

答案 0 :(得分:1)

如果你通过innerHTML添加到你的页面的内容中有一个脚本,它就不会执行,一个可能的解决方案是派生这些脚本标签并通过Javascript再次添加到你的页面,这样他们就可以了执行这个时间。

请参阅:https://stackoverflow.com/a/20584396/1821461