如何在带有_layout.cshtml的视图中使用javascript

如何在带有_layout.cshtml的视图中使用javascript,javascript,jquery,asp.net-mvc-5,Javascript,Jquery,Asp.net Mvc 5,我有一个MVC5项目。在共享布局cshtml文件中,通常的javascript链接到jquery和bootstrap 我有一个单独的视图,将此代码添加到: <div class="test"> @Html.CheckBoxFor(m => m.MyBool, new { @checked = "checked", onClick="toggleVisibility(this)" }) @Html.LabelFor(m => m.MyBool) </

我有一个MVC5项目。在共享布局cshtml文件中,通常的javascript链接到jquery和bootstrap

我有一个单独的视图,将此代码添加到:

<div class="test">
    @Html.CheckBoxFor(m => m.MyBool, new { @checked = "checked", onClick="toggleVisibility(this)" })
    @Html.LabelFor(m => m.MyBool)

</div>

<div id="content">
    my content
    @Html.TextBoxFor(m => m.MyText, new { id = "TextBoxA", style = "width:20px;" })
    <br />
    <p>
        Lorum ipsum
    </p>
    <p>
        Lorem Ispum
    </p>
</div>
我遇到的问题是,如果我把这个javascript放在脚本标记中的共享文件中,我就不能在视图中使用这个函数,但是如果我在视图本身中使用它,我还需要手动将脚本链接添加到jquery包中。像这样:

@Scripts.Render("~/bundles/jquery")
<script type="text/javascript" language="javascript">
    function toggleVisibility(cb) {
        var x = document.getElementById("content");
        if (cb.checked == true)
            //x.style.visibility = "visible"; // or x.style.display = "none";
            $("#content").show("fast");
        else
           // x.style.visibility = "hidden"; //or x.style.display = "block";
        $("#content").hide("fast");
    }
</script>
@Scripts.Render(“~/bundles/jquery”)
功能切换可见性(cb){
var x=document.getElementById(“内容”);
如果(cb.checked==true)
//x、 style.visibility=“visible”//或x.style.display=“none”;
$(“内容”).show(“快速”);
其他的
//x.style.visibility=“hidden”//或x.style.display=“block”;
$(“内容”).hide(“快速”);
}
我想知道这是否正常,如果不是,是否有解决办法

您可以在这里使用

1.在视图中创建一个剖面

 @section scripts{
 <script type="text/javascript" language="javascript">
function toggleVisibility(cb) {
    var x = document.getElementById("content");
    if (cb.checked == true)
        //x.style.visibility = "visible"; // or x.style.display = "none";
        $("#content").show("fast");
    else
       // x.style.visibility = "hidden"; //or x.style.display = "block";
    $("#content").hide("fast");
}
 </script>
}
@节脚本{
功能切换可见性(cb){
var x=document.getElementById(“内容”);
如果(cb.checked==true)
//x、 style.visibility=“visible”//或x.style.display=“none”;
$(“内容”).show(“快速”);
其他的
//x.style.visibility=“hidden”//或x.style.display=“block”;
$(“内容”).hide(“快速”);
}
}
  • 绑定调用后_layout.cshtml中的Render部分

    @RenderSection(“脚本”)


  • 如果包含指向toggleVisibility函数的链接,则指向javascript文件/捆绑包的链接是否正常工作?乍一看,我看不出它为什么不起作用。是的,它在那里起作用,但我担心一旦发布到IIS,路径就会出错。我也不明白为什么它不能工作,因为共享文件中的所有Jquery/bootstrap css和javascript都能工作。我似乎无法从另一个视图中访问它。如果包含toggleVisibility函数的javascript文件包含正确(因此页面定义了toggleVisibility函数),那么它应该可以在任何地方工作,即使是在另一个视图中。控制台是否记录了一些内容?不,我只是得到一个错误,没有为该页面定义它。如果您查看生成的HTML(右键单击并查看源代码),您会看到一个指向javascript文件的有效链接,其中包含此函数?
     @section scripts{
     <script type="text/javascript" language="javascript">
    function toggleVisibility(cb) {
        var x = document.getElementById("content");
        if (cb.checked == true)
            //x.style.visibility = "visible"; // or x.style.display = "none";
            $("#content").show("fast");
        else
           // x.style.visibility = "hidden"; //or x.style.display = "block";
        $("#content").hide("fast");
    }
     </script>
    }