2012-02-27 27 views
17

Trong ứng dụng mvc 3 của tôi, giả sử tôi có cấu trúc thư mục như \Views\Account\js\custom.js Làm cách nào để thêm tệp đó vào chế độ xem của tôi trong Account\index.cshtml?MVC - Truy cập các tệp css, hình ảnh, js trong thư mục xem

Tôi đã thử:

<script src="js/custom.js" type="text/javascript"></script> 
<script src="/views/account/js/custom.js" type="text/javascript"></script> 
<script src="~views/account/js/custom.js" type="text/javascript"></script> 

nhưng không có vẻ làm việc, con đom đóm luôn nói tập 404 không tìm thấy ở những nơi mà không có gì giống như những người tôi chỉ định. (đôi khi nó bổ sung thêm khung nhìn trong đường dẫn: -s)

Tôi biết tôi có thể đặt nó bên ngoài khung nhìn trong thư mục của riêng mình và truy cập vào nó như /myFolder/myfile.js và nó sẽ hoạt động nhưng tệp javascript này rất liên quan mật thiết đến những gì đang diễn ra trên chế độ xem tài khoản và không có gì khác, do đó, bạn nên đặt nó ở đó ..

cảm ơn.

Trả lời

15

File web.config trong thư mục/Lần đọc hạn chế tất cả quyền truy cập vào các tệp trong thư mục theo mặc định:

<httpHandlers> 
    <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/> 
</httpHandlers> 

Bạn có thể thay đổi điều đó, nhưng nó có thể an toàn hơn o verall để không lưu trữ các tài sản trong thư mục views.

+0

hm ... yea, sửa đổi hành vi cụ thể của web.config có vẻ như một điều ngu ngốc để làm .. Tôi sẽ chỉ đặt tệp js này với phần còn lại của tệp js của tôi .. cảm ơn rất nhiều. – LocustHorde

+8

Xem http://stackoverflow.com/questions/604883/where-to-put-view-specific-javascript-files-in-an-asp-net-mvc-application để biết ví dụ về cách để cho phép chỉ cho phép các tệp js được phân phát từ thư mục Views. – slolife

0

Cách tốt nhất là sử dụng T4MVC - http://mvccontrib.codeplex.com/wikipage?title=T4MVC Không cần phải sử dụng dây ma thuật ...

+0

vâng, tôi đã có điều đó, nhưng những rắc rối là tập tin js của tôi không phải là trong ' 'scripts'' hoặc'' thư mục content'' , đúng hơn là bên trong thư mục chế độ xem và không có bất kỳ điều gì để tôi tìm nạp tệp đó. – LocustHorde

+0

Bạn có thể thay đổi tệp cài đặt T4 đi kèm với T4MVC để bao gồm các thư mục khác với Tập lệnh và Nội dung. –

+0

Tôi thấy .. nhưng ngay cả như vậy, như đã đề cập trong câu trả lời của [pjumbl] (http://stackoverflow.com/a/9468864/435867) .. nó vẫn sẽ là không thể tiếp cận! Cảm ơn bạn mặc dù. – LocustHorde

2

Bạn có thể sử dụng một UrlHelper:

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

Xin chào, tôi đã thực hiện việc này, nhưng nó vẫn tiếp tục là 404 .. Tôi đã cố gắng xem xét đường dẫn đã giải quyết trên nguồn xem và có vẻ chính xác .. vì vậy có thể là [câu trả lời của pjumble] (http: // stackoverflow. com/a/9468864/435867) là chính xác: ( – LocustHorde

0

Thêm này theo quan điểm của bạn web.config Handlers phần

<add name="JavaScriptHandler" path="*.js" verb="*" preCondition="integratedMode" type="System.Web.StaticFileHandler" /> 
Các vấn đề liên quan