我有一个布局,一个视图和一个局部视图。我在视图中使用了我的布局,在视图中我将带有ajax的局部视图加载到视图中。我在我的布局中使用了@RenderSection("Script", required: false)
来将我的验证js文件加载到具有以下语句的部分视图中:
@section Script{
<script src="~/Content/js/register.js"></script>
}
但是在运行我的项目并获取视图源后,我看到该文件仍然没有加载到此页面。然后我以这种方式将@section Script{ <script src="~/Content/js/register.js"></script> }
放入我的视图中加载文件,但任何验证都不会运行。但是当我将脚本文件代码复制到部分视图中时,它们正在运行。现在我想知道为什么当我使用文件时不运行我的脚本?
谢谢!
答案 0 :(得分:3)
您可以参考以下代码来渲染您的脚本:
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
});
希望它可以解决您的问题。
由于
快乐编码:)
答案 1 :(得分:0)
您无法在局部视图中使用@section Scripts{}
。它什么都不改变,也不会渲染。如果没有Section Helper,你最好使用脚本文件。
了解更多: Injecting content into specific sections from a partial view ASP.NET MVC 3 with Razor View Engine
答案 2 :(得分:0)
要对此问题进行更新,目前这是我们在Razor局部中内部进行此操作的方式:
js
标签的文件中或位于script src="..
标签本地的文件中具有<script>
自己的段document.ready
,IFFE
用于立即调用一系列事件以加载部分中保存的JS小部件等。 IFFE
的示例为:
<script>
function ShoutAtMe(str) {
alert(str)
}
(_ => {
ShoutAtMe("HELLO")
})();
</script>
此脚本块将位于Partial
之内。