您可以控制在页面上呈现Kendo UI MVC内联脚本的位置,但无法完全删除它们。实际上,你可以,但是小部件不会初始化。
考虑使用非MVC Kendo UI小部件:
http://docs.telerik.com/kendo-ui/aspnet-mvc/kendo-ui-vs-mvc-wrappers
Vanilla HTML / JavaScript Kendo UI小部件提供对初始化脚本放置的完全控制 - 服务器包装器在小部件的HTML输出之后立即呈现小部件的初始化脚本。即使你使用 延迟初始化 ,脚本仍保留在视图中。使用普通(非包装)Kendo UI小部件时,您自己编写初始化脚本并将其移动到外部脚本文件。
另请记住,Kendo UI模板依赖于此 eval ,如果启用CSP,也会带来麻烦。
eval
我尝试使用Nuget的NWebSec CSP包(5.1.1 https://docs.nwebsec.com/en/aspnet4/index.html )但无法使用NWebSec'<'content-Security-Policy> Web.config中的部分。即使CSP在仅报告模式下看起来很好并且Kendo Widgets工作,但只要打开CSP,Widgets就会完全失败。
我评论了'<'内容 - 安全政策> '<'nwebsec>的部分在Web.config中将我的所有CSP指令移回'<'httpProtocol> <'customHeaders>和剑道MVC(2018.1.322)现在有效。
通过将NWebSec作为项目的一部分进行维护并添加 @将NWebsec.Mvc.HttpHeaders.Csp用于视图并将HTMLHelper应用到脚本标记中我为任何内联脚本生成一个自动生成的nonce'<'script @ Html.CspScriptNonce()>因此保留NWebSec仍然很有价值