我試圖讓腳本和樣式捆綁在 .NET 框架 4.8 Webforms 應用程式中作業,但沒有成功。
我已經安裝了 Microsoft.AspNet.Web.Optimization NuGet 包并根據檔案構建了我的 Bundle Config 類,并且我在 global.asax 的 Application_Start 中呼叫了 RegisterRoutes,但是當我嘗試讓包呈現時母版頁,我收到錯誤并且頁面無法加載。
在 BundlesConfig.cs...
public class BundleConfig
{
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new StyleBundle("~/bundles/SiteCSS").Include(
"~/Theme/bootstrap/css/bootstrap.css",
"~/Theme/fontawesome/css/all.css",
"~/Theme/site/site.css"
));
bundles.Add(new ScriptBundle("~/bundles/SiteJS")
.Include(
"~/Theme/jquery/js/jquery-3.6.0.js",
"~/Theme/bootstrap/js/bootstrap.js",
"~/Theme/fontawesome/js/all.js",
"~/Theme/site/site.js"
));//.Transforms.Add(new JsMinify());
}
}
在 global.asax...
protected void Application_Start(object sender, EventArgs e)
{
BundleTable.EnableOptimizations = true;
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
但是當我在站點母版頁中添加以下內容時......
<asp:PlaceHolder runat="server">
<%: Styles.Render("~/bundles/SiteCss") %>
</asp:PlaceHolder>
和
<asp:PlaceHolder runat="server">
<%: Scripts.Render("~/bundles/SiteJS") %>
</asp:PlaceHolder>
我得到錯誤...
CS0103:當前背景關系中不存在名稱“樣式”。
和
CS0103:當前背景關系中不存在名稱“腳本”。
感覺就像我已經完成了我需要做的所有事情,因為它看起來相當直截了當,但它只是不起作用......
有任何想法嗎?
謝謝,卡爾
uj5u.com熱心網友回復:
關于您的方案,您首先需要確保已添加:<add namespace="System.Web.Optimization" />在您的 web.confignamespaces部分下。這將處理背景關系錯誤,并且您的Scripts和Styles將可用于View.
其次,關于Object reference not set to an instance of an object錯誤,您需要更改ScriptBundle為只是Bundle因為ScriptBundle呼叫了一個縮小器,并且如果該程序中存在任何問題(例如腳本已經被縮小,縮小程序中出現一些錯誤等),那么ScriptBundle將回傳null并因此錯誤被拋出。因此,為了防止此錯誤并停止捆綁中的縮小步驟,只需Bundle在添加到BundleConfig.cs條目時使用型別。
改變
bundles.Add(new ScriptBundle("~/bundles/SiteJS")
到
bundles.Add(new Bundle("~/bundles/SiteJS")
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/457287.html
