2013-02-19 42 views
9

Rất nhiều mã mà tôi đã thấy thông tin này:ASP.Net MVC 4 Gói

@section Scripts { 
    @Scripts.Render("~/bundles/jqueryval") 
} 

Đó là tuyệt vời, và nó hoạt động ... nếu "cái gì đó" được bao gồm. Tôi có phải thêm một tài liệu tham khảo để có được những điều này? Sử dụng NuGet? Sao chép một DLL? Trường hợp nào này đến từ đâu?

Khi tôi chạy dự án của mình, tôi nhận được 404 cho tài nguyên đó.

Trả lời

11

Bạn cần phải tạo nhóm. Điều này thường được thực hiện trong tệp App_Start\BundleConfig.cs trong dự án ASP.NET MVC 4 của bạn. Tất cả được giải thích trong Bundling and Minification.

Trong lớp BundleConfig bạn cần một cái gì đó như thế này (phương pháp này nên thực hiện trong Application_Start):

public static void RegisterBundles(BundleCollection bundles) { 
    bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
       "~/Scripts/jquery-{version}.js")); 

    bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
       "~/Scripts/jquery.unobtrusive*", 
       "~/Scripts/jquery.validate*")); 

    // ... more registrations ... 
} 

Các tập tin nguồn javascript nên tồn tại trong thư mục Scripts. Hướng dẫn được liên kết ở trên giải thích cách các phiên bản được rút gọn trong gói bản phát hành v.v.

+0

Đáng nói rằng tham chiếu đến 'System.Web.Optimization' phải được thêm vào trong' BundleConfig.cs' ngay sau khi tạo lớp. – Dayan

0

Trong dự án của bạn App_Start/BundleConfig.cs là khai báo cho tất cả các gói. Hãy xem xét điều này:

bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
     "~/Scripts/jquery.unobtrusive*", 
     "~/Scripts/jquery.validate*")); 

Trong trường hợp này nếu bạn tham khảo "~/bó/jqueryval" nó sẽ bao gồm 2 kịch bản được liệt kê cho bạn, và như một phần thưởng, nó sẽ rút gọn chúng (nếu bạn chạy dự án của bạn trong Chế độ "Phát hành").

Hãy xem this để biết thêm chi tiết.

7

Có, bạn phải đăng ký các gói trong ứng dụng của mình.

Global.asax.cs:

 protected void Application_Start() { 

     AreaRegistration.RegisterAllAreas(); 

      // Register the bundles 
      BundleConfig.RegisterBundles(BundleTable.Bundles); 
     } 

BundleConfig.cs:

 public class BundleConfig 
    { 
     // For more information on Bundling, visit http://go.microsoft.com/fwlink/?LinkId=254725 
     public static void RegisterBundles(BundleCollection bundles) 
     { 
      bundles.Add(new ScriptBundle("~bundles/jqueryval").Include(
         "~/Scripts/jquery.unobtrusive*", 
         "~/Scripts/jquery.validate*", 
         "~/Scripts/jquery.livequery.js", 
         "~/Scripts/jquery.numeric.js" 
         ));    
     } 

Vì vậy, khi bạn đặt mã này theo quan điểm của bạn:

@section Scripts { 
    @Scripts.Render("~/bundles/jqueryval") 
} 

Nó sẽ làm cho 4 javascript các tập tin.

thêm: Bundling and Minification

9

FYI - Tôi đã thấy nhiều ví dụ của việc sử dụng Gói trong MVC, nhưng hầu hết bỏ bê kể rằng các hội đồng cho điều này là trong System.Web.Optimization.dll và bạn có thể có được điều này từ NuGet bằng cách thêm gói Microsoft ASP.NET Tối ưu hóa Web gói.

+1

Các ứng dụng MVC 4 mới được tạo đã bao gồm tham chiếu đến System.Web.Optimization.dll. –

0
  1. Đi tới thư mục App_Start.
  2. Mở gói BundleConfig.cs
  3. Bên trong phương thức RegisterBundles, kiểm tra xem bạn có những điều sau đây không.
 

bundles.Add(new ScriptBundle("~bundles/jqueryval").Include("~/Scripts/jquery.min.js")); 
 

Vui lòng không nằm trong phương thức Bao gồm, nó bao gồm các tệp trong dự án của bạn.

Các vấn đề liên quan