Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将js文件加载到部分视图中_Javascript_Jquery_Asp.net Mvc - Fatal编程技术网

Javascript 将js文件加载到部分视图中

Javascript 将js文件加载到部分视图中,javascript,jquery,asp.net-mvc,Javascript,Jquery,Asp.net Mvc,我有一个布局,一个视图和一个局部视图。我在视图中使用了布局,在视图中,我使用ajax将部分视图加载到视图中。我在布局中使用了@RenderSection(“Script”,required:false)将我的验证js文件加载到局部视图中,其中包含以下语句: @section Script{ <script src="~/Content/js/register.js"></script> } @节脚本{ } 但在运行我的项目并获取视图源代码后,我看到该文件仍然没

我有一个布局,一个视图和一个局部视图。我在视图中使用了布局,在视图中,我使用ajax将部分视图加载到视图中。我在布局中使用了
@RenderSection(“Script”,required:false)
将我的验证js文件加载到局部视图中,其中包含以下语句:

@section Script{
    <script src="~/Content/js/register.js"></script>
}
@节脚本{
}
但在运行我的项目并获取视图源代码后,我看到该文件仍然没有加载到此页面。然后我将
@section Script{}
以这种方式放入我的视图中,加载了文件,但任何验证都不会运行。但当我将脚本文件代码复制到部分视图时,它们正在运行。现在我想知道为什么我使用文件时不运行脚本


谢谢

您可以参考以下代码来呈现脚本:

function loadScript(url, callback){

    var script = document.createElement("script")
    script.type = "text/javascript";

    if (script.readyState){  //IE
        script.onreadystatechange = function(){
            if (script.readyState == "loaded" ||
                    script.readyState == "complete"){
                script.onreadystatechange = null;
                callback();
            }
        };
    } else {  //Others
        script.onload = function(){
            callback();
        };
    }

    script.src = url;
    document.getElementsByTagName("head")[0].appendChild(script);
}
在您的情况下,您必须像这样使用此功能:

在您的成功请求之后:

$('#divreg').html(data);
loadScript("~/Content/js/register.js", function(){
    //initialization code
});
希望它能解决你的问题

谢谢


快乐编码:)

您不能在局部视图中使用
@section Scripts{}
。它不会更改任何内容,也不会渲染。您最好使用不带节助手的脚本文件

阅读更多:

为了更新这个问题,我们目前在Razor部分内部是这样做的:

  • 触发按钮单击后,将在父视图中渲染部分
  • 局部视图在带有
    script src=“..
    标记的文件中或在
    标记的本地内部都有自己的
    js
  • document.ready
    类似,
    IFFE
    用于立即调用一系列事件,以加载保存在分部文件中的JS小部件等
  • 部分视图正确加载JS
这方面的一个例子是:

<script>
    function ShoutAtMe(str) {

        alert(str)

    }

    (_ => {
        ShoutAtMe("HELLO")
    })();
</script>

函数ShoutAtMe(str){
警报(str)
}
(_ => {
ShoutAtMe(“你好”)
})();

此脚本块将位于通过
AJAX
呈现
局部视图的
方法中?否,在成功请求后,我将结果放入类似$('#divreg').html(数据)的div中;您的
register.js
文件中有什么。它引用动态加载的元素,在这种情况下您使用的是事件委派吗?并且
@RenderSection()
在部分视图(仅主视图)中不受支持。OP已经提到他正在使用
@section Scripts{}
查看页面上
不在
部分视图中
。非常感谢,脚本中的代码确实使用了事件委派吗?