使用Cassette启动时,“对象引用未设置为对象”

时间:2012-03-26 17:51:45

标签: asp.net-mvc cassette

我正试图通过NuGet开始使用Cassette。我在我的应用程序中遇到了问题所以我回滚并在一个新的空ASP.NET MVC 3 Web应用程序中尝试了它。

然而,问题仍然存在。在文档页面“易于使用”之后,我根本无法使其工作。这是一个例外以及一些堆栈:

"Object reference not set to an instance of an object."

[NullReferenceException: Object reference not set to an instance of an object.]
   Cassette.CassetteApplicationContainer.get_Application() +6
   Cassette.Views.Bundles.Reference(String assetPathOrBundlePathOrUrl, String pageLocation) +14
   ASP._Page_Views_Shared__Layout_cshtml.Execute() in d:\Dave\Documents\Visual Studio 2010\Projects\CasetteTest\Views\Shared\_Layout.cshtml:2
   System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +207

我只是按照文档中的两个步骤操作,这就是我得到的。我做错了什么?

这就是我的_Layout.cshtml文件:

@{
    Bundles.Reference("Scripts/jquery-1.5.1.min.js");
    Bundles.Reference("Scripts/modernizr-1.7.min.js");    
}
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>@ViewBag.Title</title>
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
</head>

<body>
    @RenderBody()
    @Bundles.RenderScripts();
</body>
</html>

2 个答案:

答案 0 :(得分:3)

我明白了。

我包含了Cassette.Views包,该包不会创建一个默认的CassetteConfiguration.cs文件,该文件将每个脚本和每个css文件捆绑在自己的包中。这就是触发NullReferenceException的原因。为了使它工作,你需要添加Cassette.Web包。在我的辩护中,NuGet库中的包描述并不清楚,并且人们相信MVC需要Views包,而WebForms则需要。

接下来的问题是我引用了缩小的'.min.js'脚本,这些脚本没有被捆绑器拾取(似乎)。

答案 1 :(得分:2)

无法重现此问题。

4个简单的步骤让我可以在不到30秒的时间内完成原型工作:

  1. 在Visual Studio中创建一个新的ASP.NET MVC 3项目
  2. Install-Package Cassette.Web
  3. Index.cshtml

    @using Cassette.Web
    @{
        Bundles.Reference("~/Scripts/jquery-1.5.1.js");
        Bundles.Reference("~/Scripts/jquery-ui-1.8.11.js");
        Bundles.Reference("~/Content/site.css");
        Layout = null;
    }
    <!DOCTYPE html>
    <html>
    <head>
        <title>Web App</title>
        @Bundles.RenderStylesheets()
    </head>
    <body>
        <div>Hello World</div>
        @Bundles.RenderScripts()
    </body>
    </html>
    
  4. Ctrl + F5 运行项目