以下2个Javascripts有什么区别?我可以在Razor引擎MVC页面中使用第二种形式的Javascript而没有任何问题,那么使用第一种形式有什么好处呢?
MVC风格
@section Scripts {
function check()
{
//do some validation logic here
}
}
WebForms风格
<script type="text/javascript">
function check()
{
//do some validation logic here
}
</script>
答案 0 :(得分:1)
@section Scripts
本身不会在页面中产生任何输出,您需要在某处呈现该部分。当你使用它时,在某个地方有一个RenderSection
调用,如下所示:
<script type="text/javascript">
@RenderSection('Scripts')
</script>
该部分名为Scripts
的事实没有任何相关性,它只是一个用于包含脚本的部分的约定。
答案 1 :(得分:1)
@section Scripts {
就像你的脚本占位符一样。在您的布局页面中,您将包含以下内容
<!DOCTYPE html>
<html>
<head>
....
</head>
<body>
// common html for all pages based on this layout
@RenderSection("scripts", required: false)
</body>
这就是说,如果页面包含Scripts
部分,则在此处进行渲染。因此,使用此布局的页面可能具有以下内容
@section scripts {
@Scripts.Render("~/bundles/jqueryval")
<script src="../../Scripts/YourScript.js" type="text/javascript"></script>
<script type="text/javascript">
$('#SomeElement').click(function() {
// do something
});
</script>
}
和@RenderSection("scripts", required: false)
将替换为@section scripts {
答案 2 :(得分:1)
这可能有效,但出于某种原因不太理想:
@section Scripts {
function check()
{
//do some validation logic here
}
}
会导致你失去智力感。它可能会起作用,但会使生活变得更加困难。通常最好包含脚本标记:
@section Scripts {
<script type="text/javascript">
function check()
{
//do some validation logic here
}
</script>
}
此外,@ section脚本还会在母版页中定义@RenderSection(“Scripts”)。没有它,它会完全呈现您拥有的脚本标记(在WebForms示例中)。