如何在带有_layout.cshtml的视图中使用javascript
我有一个MVC5项目。在共享布局cshtml文件中,通常的javascript链接到jquery和bootstrap 我有一个单独的视图,将此代码添加到:如何在带有_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) </
<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(“快速”);
}
}
@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>
}