将特定于视图的JavaScript添加到Asp.Net Core 2 MVC应用程序的首选方法是什么?

时间:2018-10-20 03:56:23

标签: javascript asp.net-core-mvc asp.net-core-2.0

我有要添加到单个Razor视图(CSHTML)的JavaScript,该视图应与input关联以过滤TABLE

$(document).ready(function () {

    // added for testing
    alert('ready');

    (function ($) {

        $('#filter').keyup(function () {

            var rex = new RegExp($(this).val(), 'i');
            $('.searchable tr').hide();
            $('.searchable tr').filter(function () {
                return rex.test($(this).text());
            }).show();

        })

    }(jQuery));

});

此刻,代码包含在视图底部的SCRIPT标记中。

页面加载后,警报永远不会触发。

如果我包装SCRIPT

@section Head {
    <script type="text/javascript">
        $(document).ready(function () {
            // your code goes here
        });
    </script>
}

产生此错误:

  

InvalidOperationException:已定义以下部分   但尚未由该页面呈现   '/Views/Shared/_Layout.cshtml':'Head'。忽略未渲染的   部分调用IgnoreSection(“ sectionName”)。

将特定于视图的JavaScript添加到Asp.Net Core 2 MVC应用程序的首选方法是什么?

相关:https://stackoverflow.com/a/24895364/134367

1 个答案:

答案 0 :(得分:1)

找到答案。

我将JAVASCRIPT包裹在一个@section Scripts块中:

@section Scripts {
    <script type="text/javascript">
    $(document).ready(function () {

        alert('ready');

        (function ($) {

            $('#filter').keyup(function () {

                var rex = new RegExp($(this).val(), 'i');
                $('.searchable tr').hide();
                $('.searchable tr').filter(function () {
                    return rex.test($(this).text());
                }).show();

            })

        }(jQuery));

    });
    </script>
}

这似乎是由_Layout.cshtml中的@RenderSection("Scripts", required: false)调用的。

执行完此操作并重新加载页面后,警报就会触发,其余代码将按预期工作。