2009-02-22 15 views
22

Thư mục Nội dung có đặc biệt cho khung công tác cơ bản của MVC không? Tôi không thể tìm thấy bất kỳ tham chiếu đến nó trong mã định tuyến hoặc cấu hình.Thư mục Nội dung có linh hoạt trong asp.net MVC không?

Tôi chỉ tự hỏi liệu nội dung tĩnh có thể được xử lý theo các cách khác nhau hay không.

Trên một lưu ý liên quan, kịch bản và nội dung css stackoverflow dường như được lấy ra bằng số phiên bản trong chuỗi truy vấn:

<link href="/Content/all.min.css?v=2516" rel="stylesheet" type="text/css" /> 

Care để suy đoán thế nào điều này có thể làm việc và tại sao điều này sẽ là quan trọng?

+0

@BC, tôi hỏi cùng một câu hỏi là tôi cũng tò mò. Giới thiệu về các tệp css. Kiểm tra: http://stackoverflow.com/questions/502600/versioning-css-files-with-a-query-string-like-stackoverflow-does – mmcdole

Trả lời

18

Không có phép thuật, lớp System.Web.Routing.RouteCollection có thuộc tính RouteExistingFiles kiểm soát hành vi.

Giá trị mặc định là sai, có nghĩa là Định tuyến ASP không được định tuyến URL, nhưng chỉ trả về nội dung mặc định. Trong trường hợp này, "/Content/all.min.css?v=251" bỏ qua toàn bộ quy tắc định tuyến MVC.

nếu bạn muốn thêm quy tắc định tuyến cho thư mục nội dung, bạn cần phải thêm quy tắc và đặt RouteExistingFiles thành true.

4

Tôi sử dụng cùng một kỹ thuật trên một số trang web của mình. Tôi sử dụng nó để tránh bộ nhớ đệm - nếu bạn không chỉ định một URL khác nhau cho các bản dựng khác nhau, khách hàng có thể đã lưu vào bộ nhớ cache cũ.

+0

Quan sát tốt, tôi biết đó phải là lý do. –

+2

Tôi sử dụng mysite.css? V = xx tất cả các thời gian - đau lớn trong ass nếu không nói với khách hàng của bạn để xóa bộ nhớ cache của họ hoặc thay đổi làm mới – Slee

+0

Đó là lý do, Jeff Atwood thậm chí đã nói như vậy mình trong một podcast SO. –

1

Nó không có ý nghĩa đặc biệt. Nó chỉ là một cái tên đáng yêu. Nếu bạn sử dụng trình hướng dẫn của ASP.NET MVC RC bạn sẽ thấy rằng nó được tham chiếu bên trong trang chủ của bạn (Site.Master):

<link href="../../Content/Site.css" rel="stylesheet" type="text/css" /> 

Đối với all.min.css sử dụng trong SO, nó có thể là một trình xử lý tùy chỉnh được thực hiện trên máy chủ để truy xuất trang tính kiểu nén theo phiên bản.

+0

Vì vậy, bạn có nói rằng trình xử lý định tuyến đầu tiên tìm kiếm tên thư mục vật lý thực tế trước khi chọn một bộ điều khiển để định tuyến đến? Các xét nghiệm của tôi dường như chỉ ra rằng có thể là những gì đang xảy ra. –

5

Không, thư mục Nội dung không phải là thiêng liêng. Sử dụng nó như bạn muốn.

Phiên bản mới - đó là một mẹo phổ biến để trợ giúp với phiên bản nếu bạn đã bật bộ đệm ẩn dựa trên tiêu đề http; nếu không bạn không thể đảm bảo rằng tất cả các khách hàng đang sử dụng các tập tin cập nhật. Bạn sẽ thấy rất nhiều "foo_v4.js" vv trên web ;-p

+0

Xin chào.Tôi có một [câu hỏi trong SO] (http://stackoverflow.com/questions/30273517/best-practice-for-persisting-user-state-in-special-kind-of-asp-net-mvc-applicati). Bạn có thể vui lòng giúp tôi vì nó là rất cấp thiết. Và tôi thực sự sẽ giúp ích cho bạn. –

3

Chỉ cần để thêm vào các ý kiến ​​khác về vấn đề này - cách hệ thống định tuyến làm việc như sau:

Một yêu cầu đến trong, và được chuyển hướng đến công cụ định tuyến, sau đó xem qua bảng định tuyến cho phù hợp - theo thứ tự chúng được đăng ký (đó là lý do tại sao bạn nên đặt các tuyến đường cụ thể hơn trước các tuyến đường chung hơn).

Nếu không tìm thấy kết quả phù hợp, công cụ định tuyến chuyển yêu cầu đến IIS để xử lý bình thường - đây cũng là cách bạn có thể xen lẫn các biểu mẫu web ASP.NET và MVC trong cùng một ứng dụng.

+0

Nhưng Nội dung/truy vấn có phù hợp với tuyến đường mặc định của tôi không? –

+2

Không, bởi vì bạn không có bộ điều khiển gọi là ContentController cho nó để phù hợp. –

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