8

Tôi đang bắt đầu sử dụng tính năng rút gọn và đóng gói của .NET 4.5 để rút gọn gói CSS và JavaScript của mình thành &. Tuy nhiên, công cụ rút gọn JavaScript hoạt động rất tốt, tuy nhiên, tôi đã gặp sự cố với việc rút gọn CSS. Tôi tạo ra một bó phong cách sử dụng mã dưới đây -Gói kiểu trong .NET 4.5 và các biểu tượng trong CSS

var myCss = new string[] 
             { 
              "~/Content/jquery.css", 
              "~/Content/app.css", 
             }; 
bundles.Add(new StyleBundle("~/bundles/MySiteCss/").Include(myCss)); 

và sau đó tôi tham khảo chúng trong .cshtml (dao cạo file) như sau -

@Styles.Render("~/bundles/MySiteCss/") 

Nó minifies file CSS. Tuy nhiên, nếu các tệp CSS chứa các kiểu có tham chiếu hình nền, chẳng hạn như background-image: url ('img/icon.png'), nó sẽ cố gắng tải tệp biểu tượng này từ một vị trí mới (bắt nguồn từ tên gói) = /bundles/MySiteCss/img/icon.png

Vì biểu tượng không tồn tại ở vị trí, nó không được tải và hiển thị trên trang.

+0

Thay đổi địa chỉ thành url tuyệt đối. – ZippyV

Trả lời

10

Bạn cần có các gói và CSS được phân phối từ cùng một nơi để tính năng này hoạt động dễ dàng. Ví dụ, thay đổi dòng bó của bạn là:

bundles.Add(new StyleBundle("~/Content/MySiteCss/").Include(myCss)); 

Và cập nhật bạn tham khảo cũng như:

@Styles.Render("~/Content/MySiteCss/") 
+0

đã hoạt động, cảm ơn bạn đã trả lời nhanh! – govin

+0

Tôi muốn đóng gói đủ thông minh để viết lại các đường dẫn đó trong khi rút gọn, SquishIt có thể làm điều đó, những người khác cũng có thể làm điều đó, vì vậy tôi không thấy lý do tại sao gói của Microsoft không thể thực hiện được. – Giedrius

+0

@Giedrius Điều này chắc chắn là trong danh sách việc cần làm –