我正试图通过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>
答案 0 :(得分:3)
我明白了。
我包含了Cassette.Views包,该包不会创建一个默认的CassetteConfiguration.cs
文件,该文件将每个脚本和每个css文件捆绑在自己的包中。这就是触发NullReferenceException的原因。为了使它工作,你需要添加Cassette.Web包。在我的辩护中,NuGet库中的包描述并不清楚,并且人们相信MVC需要Views包,而WebForms则需要。
接下来的问题是我引用了缩小的'.min.js'脚本,这些脚本没有被捆绑器拾取(似乎)。
答案 1 :(得分:2)
无法重现此问题。
4个简单的步骤让我可以在不到30秒的时间内完成原型工作:
Install-Package Cassette.Web
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>