用AJAX加载的Javascript和MVC4部分视图

时间:2012-12-21 17:54:42

标签: javascript debugging jquery asp.net-mvc-4 partial-views

我有一个ASP.NET MVC 4视图,它通过JQuery AJAX调用动态地将两个嵌套的部分加载到<div>元素中。每个部分都有一大堆自己的Javascript。为了使它全部正常工作,我目前拥有每个AJAX调用的success中的所有Javascript:

function LoadPartial(someImportantId) {
    $.ajax({
        url: '@Url.Action("LoadThePartial")' + '?id=' + someImportantId,
        type: 'POST',
        async: false,
        success: function (result) {
            $("#partialContainerDiv").html(result);
            //here there be great piles of javascript
        }
    });
}

由于这些部分有两个,每个需要数百行Javascript,因此主视图文件变得难以管理。我很乐意把所有这些脚本代码放到一个单独的.js文件中,但我仍然对Javascript很新,我非常依赖Chrome的脚本调试工具,而且我很难搞清楚如何(以及如果)我可以加载此脚本文件。我试过了:

No script in debugger

  • 在主视图中添加脚本包含。这不起作用。没有 部分的Javascript附加正确,这是有道理的 同步级别。

Stuff does not work

是否有任何方法可以为AJAX加载的部分提供单独的Javascript文件,并且仍然可以在客户端上调试部分?更重要的是,我在哪里将所有这些Javascript用于AJAX加载的部分视图?

2 个答案:

答案 0 :(得分:6)

在主页面中包含的功能中包含部分脚本;在AJAX成功处理程序中调用该函数,在部分加载后执行脚本。

答案 1 :(得分:1)

现在有一个解决方案可以将您的动态JS代码放入主要浏览器的Sources树视图中,这是使其可调试所需的全部内容。添加:

//# sourceURL=YOUR_FILENAME_OR_FULL_PATH_HERE

动态加载的局部视图中<script>标记内的任何位置。在我的实验中,#之后的空格似乎是Chrome中的需要而不是Firefox,这基本上意味着它是必需的。

来源:https://developers.google.com/web/updates/2013/06/sourceMappingURL-and-sourceURL-syntax-changed和其他一些Stack Overflow问题