我有要添加到单个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应用程序的首选方法是什么?
答案 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)
调用的。
执行完此操作并重新加载页面后,警报就会触发,其余代码将按预期工作。