@section中的Javascript循环导致解析器错误

时间:2013-06-11 13:59:17

标签: javascript asp.net-mvc-4

当我在MVC 4中的@section中使用JavaScript for循环时,我得到一个解析器错误,预计会出现大括号}。我已经看过其他一些关于这个的帖子(这是在MVC4之前的Razor 2.0中的一个已知错误)但似乎没有解决如何做到这一点。

我不是JavaScript专家,那么有没有其他方式来声明和调用这个或什么?

@section onReady{
var oTable;

    oTable = $('#services').dataTable({
        "iDisplayLength": 100,            
        "bJQueryUI": true,
        "aoColumns": [
     { "bSortable": false, "bSearchable": false },
     null, null, null, null, null, null ],

        "fnFooterCallback": function( nFoot, aData, iStart, iEnd, aiDisplay ) 
        {
            var iCalls = 0;
            for ( var i=0 ; i < aData.length ; i++ )
            {
                iCalls += aData[i][4]*1;
            }           
        }
    });
}

2 个答案:

答案 0 :(得分:2)

不要将部分放在脚本标记内。相反,在布局页面中有这样的一行:

@RenderSection("scripts", required: false)

然后在视图中:

@section scripts {
<script type="text/javascript">
        var oTable;
        //...
</script>
}

答案 1 :(得分:1)

您需要<script>个标签。

@section onReady{

<script type='text/javascript'>

$(function () {
    var oTable;

    oTable = $('#services').dataTable({
        "iDisplayLength": 100,
            "bJQueryUI": true,
            "aoColumns": [{
            "bSortable": false,
            "bSearchable": false
        },
        null, null, null, null, null, null],

            "fnFooterCallback": function (nFoot, aData, iStart, iEnd, aiDisplay) {
            var iCalls = 0;
            for (var i = 0; i < aData.length; i++) {
                iCalls += aData[i][4] * 1;
            }
        }
    });
}); 
</script>
}