@Scripts.Render("~/bundles/bootstrap") 抛出了 NullReferenceException。

7
我正在处理这个ASP.NET MVC项目。我没有对_Layout.cshtml或BundleConfig.cs或Web.config进行任何更改。当我运行该项目时,它显示以下异常:
System.NullReferenceException:“对象引用未设置为对象的实例。” [External Code] ASP._Page_Views_Shared__Layout_cshtml.Execute() in _Layout.cshtml
我尝试了最小化方法,但仍然失败。如果可能,请查看下面的照片。
有人能帮助我解决这个问题吗? Picture01 Picture02 Pciture03

1
你能展示在ASP._Page_Views_Shared__Layout_cshtml中的代码吗? - Thomson Mixab
你能试着移除 @Scripts.Render("~/bundles/bootstrap") 吗? - Chris Wong
1
在更新了一个几年前的Web API项目的Nuget包之后,我也遇到了同样的问题。 - Jay
4个回答

11

请用以下内容替换:

bundles.Add(new ScriptBundle("~/bundles/mybundle").Include(
            "~/Scripts/...",
            "~/Scripts/..."));

使用这个:

bundles.Add(new Bundle("~/bundles/mybundle").Include(
            "~/Scripts/...",
            "~/Scripts/..."));

1
请问您能否解释一下为什么这个有效,那会很有帮助。 - Paul Zahra

3
在方法 BundleConfig.RegisterBundles 中,我将所有现有的 ScriptBundle 实例替换为 Bundle 实例,并且它按预期工作。

这可以防止你的脚本被缩小...至少是我的理解。所以请确保你包含了缩小版本。 - Post Impatica
由于我只遇到了Bootstrap捆绑包的问题,所以我只更新了它的Bootstrap版本,然后它就可以工作了。非常感谢您,我差点要开始拔头发了。 - Nel Prinsloo

2
升级所有NuGet包后,特别是升级到Bootstrap 5.1后,我遇到了旧的Web API项目中的同样问题。在VS 2019中,对于一个新的默认Web API项目,在升级其包到Bootstrap 5.1之后,_Layout.cshtml中出现了NullReferenceException异常!显然,ASP.NET项目尚未正确处理Bootstrap 5.1的依赖关系 - 通过VS Nuget Manager降级到最后可用的4.x版本解决了我的项目问题。

1

Akanksha提供的建议解决了我将一个较旧的ASP.NET WebAPI项目从Bootstrap 3.x升级到5.1.x后出现的问题。

在方法BundleConfig.RegisterBundles中,我将所有现有的ScriptBundle实例替换为Bundle实例,然后它正常工作了。

bundles.Add(new Bundle("~/bundles/bootstrap").Include(
    "~/Scripts/bootstrap.js",
    "~/Scripts/respond.js"));

那么为什么要添加一个与现有答案完全相同的新答案呢?这样做有什么价值呢? - Dale K
确认。 你有什么问题?Ljiljana在我之后回答了同样的问题,你不想评论吗?1.5年后才评论,感到无聊了吗? - JoKi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接