Javascript 将js文件加载到部分视图中
我有一个布局,一个视图和一个局部视图。我在视图中使用了布局,在视图中,我使用ajax将部分视图加载到视图中。我在布局中使用了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> } @节脚本{ } 但在运行我的项目并获取视图源代码后,我看到该文件仍然没
@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
用于立即调用一系列事件,以加载保存在分部文件中的JS小部件等IFFE
- 部分视图正确加载JS
<script>
function ShoutAtMe(str) {
alert(str)
}
(_ => {
ShoutAtMe("HELLO")
})();
</script>
函数ShoutAtMe(str){
警报(str)
}
(_ => {
ShoutAtMe(“你好”)
})();
此脚本块将位于通过
AJAX
呈现局部视图的方法中?否,在成功请求后,我将结果放入类似$('#divreg').html(数据)的div中;您的register.js
文件中有什么。它引用动态加载的元素,在这种情况下您使用的是事件委派吗?并且@RenderSection()
在部分视图(仅主视图)中不受支持。OP已经提到他正在使用@section Scripts{}
在查看页面上
不在部分视图中
。非常感谢,脚本中的代码确实使用了事件委派吗?