2012-02-21 22 views
6

Chúng tôi muốn tách javascript ra khỏi chế độ xem Dao cạo của chúng tôi (để chúng tôi có thể kiểm tra). Chúng ta có thể định vị các tệp .js gần các khung nhìn mà chúng tương ứng với thay vì trong thư mục Scripts không? Ví dụ: chúng tôi muốn thấy điều này trong giải pháp thám hiểm:ASP.Net MVC3: Đặt tệp .js gần Chế độ xem thay vì thư mục Scripts

MyMvcProject 
    - Views 
     - Home 
     - About.cshtml 
     - About.js 

Tuy nhiên, tôi không biết tham chiếu tệp .js từ chế độ xem .cshtml.

+1

bản sao có thể có của [Nơi đặt javascr xem cụ thể tập tin ipt trong một ứng dụng ASP.NET MVC?] (http://stackoverflow.com/questions/604883/where-to-put-view-specific-javascript-files-in-an-asp-net-mvc-application) –

Trả lời

9

Vì lý do bảo mật, asp.net-mvc chặn tất cả quyền truy cập tệp vào thư mục/Chế độ xem từ URL. Điều này có thể được làm việc xung quanh, nhưng tôi sẽ đề nghị KHÔNG làm điều này vì lý do an ninh.

Bạn thường nên để lại tập lệnh trong thư mục Tập lệnh, đặc biệt là các tập lệnh trên toàn hệ thống như jquery và các công cụ không phô trương. Điều này là để chúng có thể được cập nhật dễ dàng hơn thông qua NuGet khi các phiên bản mới hoặc các bản sửa lỗi được phát hành.

Tôi không chắc chắn lý do tại sao bạn gặp sự cố khi kiểm tra và để chúng ở vị trí mặc định.

+3

Giữ mã kết hợp chặt chẽ (như js xem cụ thể) với nhau có nghĩa là nó ít có khả năng bị bỏ qua khi sửa đổi. Đồng ý, các tệp js phổ biến phải được để lại trong Tập lệnh. Các tác động bảo mật của việc phân phối các tệp js từ thư mục View là gì? –

+0

@Brian - Lý do truy cập bị từ chối vào thư mục lượt xem từ URL là do tệp xem có thể chứa thông tin nhạy cảm. Cho phép truy cập vào thư mục có thể hiển thị thông tin bạn không muốn kẻ tấn công biết. Một tùy chọn là thêm trình xử lý http để lọc tất cả các tệp .js thông qua trình xử lý, cho phép bạn phân phát chúng thông qua mã và quyền truy cập kiểm soát. –

2

Nếu bạn nói về việc phá vỡ các tập lệnh 'tùy chỉnh' ra khỏi tầm nhìn của bạn và đặt chúng trong một thư mục riêng cho mục đích thử nghiệm javascript của bạn thì bạn có thể đặt chúng vào một thư mục bạn chọn.

Tuy nhiên, tôi sẽ không khuyên bạn nên đặt chúng cạnh nhau ... mà sẽ dẫn đến cấu trúc dự án lộn xộn và sẽ làm cho nó khó khăn hơn nhiều nếu bạn muốn giảm thiểu javascript của mình.

Tôi thường để các tệp javascript "khung" trong thư mục Tập lệnh vì lý do Mystere Man được đề cập trong câu trả lời của mình, tôi đã đặt 'tùy chỉnh' hoặc xem các tệp javascript có liên quan trong phạm vi /Content/js/.

Để tham khảo chúng bạn chỉ cần thêm một tài liệu tham khảo trong tầm nhìn của bạn hoặc trang chủ (layout):

<script type="text/javascript" src="@Url.Content("~/Content/js/somelink.js")"></script> 
+0

Sẽ khó giảm thiểu hơn vì hầu hết các công cụ thu nhỏ đều nhìn vào thư mục Tập lệnh? –

+0

@Brian - hầu hết các công cụ thu nhỏ mong đợi các tệp .js ở cùng một vị trí, không nhất thiết phải/Tập lệnh –

2

mở Views/Web.config và thay thế này

<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" /> 

với điều này

<add name="ExcludeRazorViews" path="*.cshtml" verb="*" type="System.Web.HttpNotFoundHandler" /> 
Các vấn đề liên quan