9

Tôi đang làm việc trên một dự án ASP.net 4, MVC4 (RC) sử dụng studio hình ảnh 11. Tôi đang cố gắng hiển thị chế độ xem Dao cạo MVC4 hiển thị chế độ xem một phần. Tôi có một số javascript cần thiết cho một phần của tôi xem. Trên quan điểm từng phần của tôi khi tôi bao gồm javascript của tôi bên trong phần kịch bản như sau nó dường như không tải.MVC4 xem một phần javascript bundling Số phát hành

@section Scripts { 
    <script type="text/javascript"> 
     $(function() { 
      alert("test"); 
     }); 
    </script> 
} 

Nếu tôi loại bỏ các phần kịch bản nó không thành công như các thư viện jquery (được kèm và hiển thị trên trang _Layout.cshtml của tôi) chưa nạp khi mã tài liệu sẵn sàng chạy.

<script type="text/javascript"> 
    $(function() { 
     alert("test"); 
    }); 
</script> 

_Layout trang mã để tải thư viện jquery

@Scripts.Render("~/bundles/jquery") 
@RenderSection("scripts", required: false) 

Có ai biết về một giải pháp cho điều này, hay tôi chỉ đơn giản là đi về nó một cách sai lầm? Nó đang phá hỏng đầu tôi !!

Trả lời

10

Đừng quấn kịch bản của bạn trong một document.ready trong phần:

@section Scripts { 
    <script type="text/javascript"> 
     alert("test"); 
    </script> 
} 

Ah, và không đặt script trong partials. Mã Javascript phải được đặt trong các tệp javascript riêng biệt. Nếu bạn muốn thực thi một số javascript khi một phần được tải, bạn chỉ cần đơn giản hóa tập lệnh này thành một hàm/plugin có thể sử dụng lại mà bạn gọi khi phần của bạn được tải.

+0

Cảm ơn bạn đã trả lời nhưng nó không hiệu quả với tôi. Ngay cả khi loại bỏ các tài liệu. Đã có khi tôi nhìn vào nguồn trang javascript là hoàn toàn mất tích. Nếu tôi di chuyển javascript để xem cha mẹ của nó (mà không phải là một phần xem) nó được tải. Nhưng tôi cần nó trên tải của parital xem. – martin

+0

Cuối cùng, điều này có hiệu quả. Khi tôi tạo trang với các tập lệnh – martin

+3

Thật buồn cười khi bạn đã tìm thấy sự cố của @martin và anh ấy đã đánh dấu câu trả lời của riêng mình ngay cả khi giải pháp của bạn là giải pháp đúng. : D – Samuel

4

Cuối cùng, tính năng này hoạt động. Tôi gỡ bỏ javascript của tôi từ một phần của tôi xem và đặt nó trong khung nhìn cha mẹ (mà không phải là một phần), trong phần script. Phần script này được tạo ra tự động khi tạo khung nhìn với giàn giáo (Create) và được đặt ở cuối của trang. Để làm được điều này, tôi phải di chuyển nó lên đầu trang - trước khi cuộc gọi kết thúc phần của tôi.

2

ClientDependency giải quyết chính xác vấn đề này và cho phép bạn thêm tham chiếu tập lệnh vào một phần lượt xem được cuộn lên và đặt ở cuối trang (hoặc bất cứ nơi nào bạn chỉ định) cho bạn. Nó cũng đề cập đến trang đóng gói, phiên bản và rút gọn theo trang.

Chi phí đảm bảo tham chiếu tập lệnh là trên chế độ xem "cha mẹ" thay vì phần không thực sự làm phiền tôi, nhưng phụ thuộc của khách hàng có thể hữu ích nếu bạn có nhiều partials tất cả yêu cầu tập lệnh và CSS của riêng họ.

+0

Đây là một phương pháp mở rộng nhỏ hơn và đơn giản hơn giải quyết các vấn đề cụ thể của tập lệnh trong partials: http://blog.logrythmik.com/post/A-Script-Block-Templated-Delegate-for-Inline-Scripts-in-Razor-Partials – peter3

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