2011-11-09 27 views
5

Tôi có các tệp js bên trong các khu vực và tôi không thể truy cập chúng. Khi tôi di chuyển chúng ra ngoài khu vực MVC thì tôi có thể truy cập.Tôi có thể triển khai tệp javascript trong các khu vực MVC không?

Tôi đã thử những điều sau đây:

  • đặt tên khác nhau của file js - không giải quyết vấn đề
  • Kiểm tra để xem nếu chúng tồn tại trên máy chủ - họ làm
  • tập tin
  • truy cập trực tiếp từ bên trong Trình quản lý IIS trên máy chủ - chúng sẽ không mở và trả lại không tìm thấy
  • Truy cập cùng một tệp trực tiếp từ bên trong trình quản lý IIS trên máy chủ nhưng khi tệp nằm trong thư mục tập lệnh - Chúng mở trong trình duyệt
  • Được sử dụng t anh kiểm tra tuyến đường - Khi tôi cố gắng truy cập vào các tập tin nó không mở đường debug và thay vào đó chỉ nói "404"

này hoạt động:

<script src="@Url.Content("~/Scripts/jquery/_Roles.js")" type="text/javascript"></script> 

này không hoạt động:

<script src="@Url.Content("~/Areas/Administration/Scripts/Roles/_Roles.js")" type="text/javascript"></script> 

Có thể có điều gì đó khác biệt về các tệp trong thư mục Khu vực chặn các tập lệnh không?

+0

Tại sao bạn sử dụng dấu gạch dưới trong tên tệp của mình? – ZippyV

+0

Công ước cho tôi. Tuy nhiên tôi có thể sẽ thay đổi điều đó. Dù bằng cách nào tôi nhận thấy tôi vẫn còn có cùng một vấn đề. Khi triển khai ứng dụng của tôi không thích tập lệnh trong Vùng. tuy nhiên chạy cục bộ trên máy chủ dev thì không sao. –

+1

@SamanthaJ @ Url.Content() hiển thị ở phía khách hàng là gì? Có thể vấn đề của bạn nằm ở đó. – shuniar

Trả lời

-3

Tại sao đưa kịch bản của bạn trong phần khu vực? Tôi có một trang web mvc với một khu vực là tốt, nhưng tôi vẫn giữ kịch bản của tôi trong thư mục Scripts.

Đề xuất của tôi là suy nghĩ lại lý do bạn sắp xếp nội dung theo cách đó và cân nhắc di chuyển tất cả các tệp .js bên ngoài vào thư mục Tập lệnh.

+2

Tôi có thể nghĩ ít nhất một lý do - ngăn người dùng không có quyền quản trị đọc các tập lệnh của bảng quản trị có thể cung cấp cho họ một số ý tưởng về những gì đang xảy ra ở đó (đường dẫn, chức năng, v.v.). Tôi thực sự đến đây tìm kiếm thông tin về lưu trữ các kịch bản trong một khu vực MVC ... –

+12

Một khu vực là một nhóm logic của chức năng để thực hiện các vấn đề sang một bên, tại sao bạn không muốn đặt kịch bản khu vực cụ thể vào một thư mục Area? Có vẻ thông thường với tôi. –

+2

Nếu bạn là kiến ​​trúc theo phong cách SOA của việc sử dụng các thành phần kinh doanh độc lập, điều này có ý nghĩa –

0

Bạn đã thử

ResolveUrl(

thay vì

Url.Content( 

?

Stefano

+0

Tôi sẽ thử ngay bây giờ. Mã đang chạy trên Azure nên sẽ mất 15 phút để tải lên. Kiểm tra các tài liệu Tôi không chắc chắn nó sẽ giúp như nó nói: Nếu tham số relativeUrl có chứa một URL tuyệt đối, URL được trả về không thay đổi. Nếu tham số relativeUrl chứa URL tương đối, URL đó được thay đổi thành URL tương đối chính xác cho đường dẫn yêu cầu hiện tại, để trình duyệt có thể giải quyết URL. –

0
<script type="text/javascript" src='<%: ResolveUrl("~/Scripts/jquery/_Roles.js") %>'> 
</script> 
1

Tìm câu trả lời trong another Stack Overflow question và tinh chỉnh nó cho các khu vực.

tập tin

Sửa /Areas/AreaName/Views/web.config để cho phép các máy chủ web để phục vụ JS và CSS file:

<system.web> 
    <httpHandlers> 
     <add path="*.js" verb="GET,HEAD" type="System.Web.StaticFileHandler" /> 
     <add path="*.css" verb="GET,HEAD" type="System.Web.StaticFileHandler" /> 
     <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/> 
    </httpHandlers> 
    <!-- other content here --> 
</system.web> 

<system.webServer> 
    <handlers> 
     <remove name="BlockViewHandler"/> 
     <add name="JavaScript" path="*.js" verb="GET,HEAD" type="System.Web.StaticFileHandler" /> 
     <add name="CSS" path="*.css" verb="GET,HEAD" type="System.Web.StaticFileHandler" /> 
     <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" /> 
    </handlers> 
    <!-- other content here --> 
</system.webServer> 

này sẽ cho phép phục vụ của .js và các tập tin .css, và sẽ cấm phục vụ của bất cứ điều gì khác.

+0

Tôi đã thêm những thay đổi này vào web.config trong /Areas/AreaName/web.config và nó cũng hoạt động. – BrandonG

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