Javascript @section脚本与ASP.NETWebForm中使用的常用脚本标记之间的差异
以下两个Java脚本之间有什么区别?我可以在Razor引擎MVC页面中使用第二种形式的Javascript而不会出现任何问题,那么使用第一种形式的好处是什么呢 MVC风格Javascript @section脚本与ASP.NETWebForm中使用的常用脚本标记之间的差异,javascript,asp.net-mvc-4,Javascript,Asp.net Mvc 4,以下两个Java脚本之间有什么区别?我可以在Razor引擎MVC页面中使用第二种形式的Javascript而不会出现任何问题,那么使用第一种形式的好处是什么呢 MVC风格 @section Scripts { function check() { //do some validation logic here } } <script type="text/javascript"> function check() {
@section Scripts {
function check()
{
//do some validation logic here
}
}
<script type="text/javascript">
function check()
{
//do some validation logic here
}
</script>
WebForms样式
@section Scripts {
function check()
{
//do some validation logic here
}
}
<script type="text/javascript">
function check()
{
//do some validation logic here
}
</script>
函数检查()
{
//在这里执行一些验证逻辑
}
部分脚本本身不会在页面中生成任何输出,您需要在某个地方呈现该部分。当您使用它时,在某处会有一个RenderSection
调用,如下所示:
<script type="text/javascript">
@RenderSection('Scripts')
</script>
@RenderSection('脚本')
该节名为
Scripts
这一事实没有任何相关性,它只是用于包含脚本的节的约定。该@section Scripts
本身不会在页面中生成任何输出,您需要在某个地方呈现该节。当您使用它时,在某处会有一个RenderSection
调用,如下所示:
<script type="text/javascript">
@RenderSection('Scripts')
</script>
@RenderSection('脚本')
该节名为
Scripts
这一事实没有任何相关性,它只是用于包含脚本的节的约定。@section Scripts{
就像是脚本的占位符。在布局页面中,您将包括以下内容
<!DOCTYPE html>
<html>
<head>
....
</head>
<body>
// common html for all pages based on this layout
@RenderSection("scripts", required: false)
</body>
@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”,必填项:false)
将替换为@部分脚本中的内容{
@部分脚本{
就像是脚本的占位符。在布局页面中,您将包括以下内容
<!DOCTYPE html>
<html>
<head>
....
</head>
<body>
// common html for all pages based on this layout
@RenderSection("scripts", required: false)
</body>
@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)
将被@部分scripts{
中的内容替换。这可能会起作用,但由于一个原因并不理想:
@section Scripts {
function check()
{
//do some validation logic here
}
}
将导致您失去智能感知。它可能会起作用,但会使生活更加困难。通常最好包含脚本标记:
@section Scripts {
<script type="text/javascript">
function check()
{
//do some validation logic here
}
</script>
}
@节脚本{
函数检查()
{
//在这里执行一些验证逻辑
}
}
此外,@section scripts在母版页中定义了@RenderSection(“scripts”)的位置进行渲染。如果没有它,它会精确地渲染您的脚本标记(在您的WebForms示例中)。这可能会起作用,但由于一个原因并不理想:
@section Scripts {
function check()
{
//do some validation logic here
}
}
将导致您失去智能感知。它可能会起作用,但会使生活更加困难。通常最好包含脚本标记:
@section Scripts {
<script type="text/javascript">
function check()
{
//do some validation logic here
}
</script>
}
@节脚本{
函数检查()
{
//在这里执行一些验证逻辑
}
}
此外,@section scripts在母版页中定义了@RenderSection(“scripts”)的位置进行渲染。如果没有它,它将精确地渲染您拥有的脚本标记的位置(在WebForms示例中).因此,如果我使用第二种形式,则脚本将在母版页中精确定义的位置呈现。如果是,则最好不要在母版页中包含某些脚本,尤其是当ajax请求特定MVC视图时。因此,如果我使用第二种形式,则脚本将在母版页中精确定义的位置呈现。如果是是的,那么最好不要在母版页中包含一些脚本,特别是如果它们是对特定MVC视图的ajax请求如果我不关心将脚本放在定义RenderSection的位置,那么第二个代码段应该可以。@Sunil:如果您愿意,您可以很好地使用常规脚本标记。没有任何内容表明您只需要使用节就可以了。为什么我不能简单地使用Webforms中的常规脚本标记(我问题中的第二个代码段)如果我不关心将脚本放在定义RenderSection的位置,那么第二个代码段应该可以。@Sunil:如果您愿意,您可以很好地使用正则脚本标记。没有任何规定您需要使用节,因为它们存在。