咨询:‘WebFormsBundle’不是有效脚本名称报错的解决方法
解决‘WebFormsBundle’不是有效的脚本名称(必须以‘.js’结尾)的问题
这个错误的根源很明确:你在ScriptManager里添加的<asp:ScriptReference Name="WebFormsBundle"/>不符合ASP.NET ScriptReference的命名规则——要么脚本名称得带.js后缀,要么得是已在BundleConfig中正确配置的合法Bundle名称,而你现在的写法两边都不沾。
结合你提供的代码片段,我给你两个直接可行的解决方案:
方案1:删除多余的错误引用
看你已经逐个引用了所有WebForms相关的核心脚本(WebForms.js、WebUIValidation.js、MenuStandards.js等等),完全不需要再额外引用一个未定义的WebFormsBundle。直接把这一行代码删掉,问题就能解决:
<!-- 删掉这一行即可 --> <asp:ScriptReference Name="WebFormsBundle"/>
之前运行正常就是因为没有这行错误的引用,大概率是你后来误加的。
方案2:正确配置并引用Bundle(如果确实需要打包)
如果你想通过Bundle来打包这些WebForms脚本,那得先在App_Start/BundleConfig.cs里配置这个Bundle:
bundles.Add(new ScriptBundle("~/bundles/WebFormsBundle").Include( "~/Scripts/WebForms/WebForms.js", "~/Scripts/WebForms/WebUIValidation.js", "~/Scripts/WebForms/MenuStandards.js", "~/Scripts/WebForms/GridView.js", "~/Scripts/WebForms/DetailsView.js", "~/Scripts/WebForms/TreeView.js", "~/Scripts/WebForms/WebParts.js", "~/Scripts/WebForms/Focus.js" ));
配置好之后,在ScriptManager里用Path属性指向Bundle的路径,而不是用Name:
<asp:ScriptReference Path="~/bundles/WebFormsBundle" />
同时记得删掉之前逐个引用的那些WebForms脚本,避免重复加载。
额外注意点
以后使用ScriptReference的时候要记住:
- 用
Name属性时,要么是NuGet包预定义的名称(比如你代码里的jquery、bootstrap),要么是带.js后缀的具体脚本名 - 如果要引用自定义Bundle,一定要用
Path属性指向Bundle的虚拟路径,而不是随便写个名称
内容的提问来源于stack exchange,提问作者Lara
相关产品推荐
相关产品推荐

